프로그래밍/General Development Skills

Git 이전에는 어떻게 코드를 관리했을까? - 시대를 평정한 Git의 등장

코드자국 2023. 11. 14. 17:00
반응형

Git

 

Git은 프로그래머라면 빼놓지 않고 써야할 필수 요소 입니다. 팀원과 사용을 하던 혼자 사용을 하던 프로그램의 형상 관리를 위해서는 반드시 사용 할 수 밖에 없는 입니다. Git은 2005년에 리누스 토르발스(Linus Torvalds)에 의해 개발되었습니다. 놀랍게도 Git의 등장은 2005년이고 대규모 소프트웨어가 개발 됐었던 것은 1970년대 부터 입니다. 그렇다면 대략 30년간 소프트웨어 개발자들은 어떻게 코드 형상 관리를 했을까요?

 

 

목차

  • 최종본의 최종본의 최종본의 최종본
  • 뭐가 변경 됐는지를 알려줘! patch 파일.
  • 중앙집중식 아키텍쳐 강력한 CVS(Concurrent Versions System)의 등장!
  • 형상관리 툴의 한계 그리고 빡쳐버린 토발즈 , Git의 등장
  • Git은 대체 불가능한 도구?

 

 


 

최종본의 최종본의 최종본의 최종본

최종은 아모르직다.

 

복사본을 유지 하면서 버전관리를 하는데도 한계는 있죠. 한 두명이서 작업을 할 때는 그럭저럭 할만 했지만 시스템이 대규모가 되고 여러 사람이 참여를 하는 상황에서 인수인계까지 해줘야 된다? 만일 이를 별도의 문서로 관리하기 시작하면 그 또한 '코드 관리 파일의 관리 파일의 관리 파일의...' 도저히 감당이 안 될 겁니다. 그래서 소스 코드나 텍스트 파일 등의 변경 사항을 알릴 수 있게 patch 파일을 사용합니다. 원본 파일에서 변경점만을 저장해서 별도의 patch 파일을 생성하는거죠 이렇게 되면 변경점을 쉽게 파악 할 수 있고 파일의 크기도 줄어드니 1석 2조인 셈입니다. 이러한 시스템은 CVS가 나올 때까지는 계속 되었습니다.

 

 


 

뭐가 변경 됐는지를 알려줘! patch 파일.

 

복사본을 유지 하면서 버전관리를 하는데도 한계는 있죠. 한 두명이서 작업을 할 때는 그럭저럭 할만 했지만 시스템이 대규모가 되고 여러 사람이 참여를 하는 상황에서 인수인계까지 해줘야 된다? 만일 이를 별도의 문서로 관리하기 시작하면 그 또한 '코드 관리 파일의 관리 파일의 관리 파일의...' 도저히 감당이 안 될 겁니다. 그래서 소스 코드나 텍스트 파일 등의 변경 사항을 알릴 수 있게 patch 파일을 사용합니다. 원본 파일에서 변경점만을 저장해서 별도의 patch 파일을 생성하는거죠 이렇게 되면 변경점을 쉽게 파악 할 수 있고 파일의 크기도 줄어드니 1석 2조인 셈입니다. 이러한 시스템은 CVS가 나올 때까지는 계속 되었습니다.

 

 

 

반응형

 

중앙집중식 아키텍쳐 강력한 CVS(Concurrent Versions System)의 등장!

 

컴퓨터의 발전에 따라 PC(Personal Computer)가 등장하고 이제는 각자의 PC에서 작업을 하는 시대가 도래합니다. 여기서 개인용 컴퓨터 이전의 시대의 컴퓨터 모습을 잘 모르시는 분이라면 이러한 생각을 할 수도 있을겁니다. "PC를 사용하기 전에는 하나의 작업대에서 수 십, 수 백 명이 코딩을 했단 말이야?!". 예, 뭐 아실 분들은 아시겠지만 당연히 아니죠.

 

Main Frame과 Terminal

 

PC 이전의 시대에는 Main Frame이라는 하나의 컴퓨터를 두고 Terminal 이라는 단말기들이 접속을하여 사용 했습니다. 과거에는 연산을 수행하는 컴퓨터가 매우 비싸고 크기도 컸기 때문에 개개인이 컴퓨터를 갖고 사용 할 수 없는 구조였습니다. 이때문에 Terminal이 통신을 통해서 Main Frame에 접속하고 명령어를 입력하면 Main Frame이 연산을 수행했는데요. 이러한 개념으로 리눅스 'Terminal'의 이름이 생기게 됩니다.

 

초소형 컴퓨터의 규모. '개인을 위한 컴퓨터는 없다'

 

결국 PC의 등장으로 개개인이 컴퓨터를 가지고 작업을 하게 되었고 각자의 컴퓨터에서 작업한 결과를 하나의 저장소에 합합치면서 버전관리를 해야 될 필요성이 생기게 됩니다. 그렇게 Git의 토대가 되는 CVS가 등장합니다. CVS의 주요 기능입니다.

 

  • 병렬 개발 및 협업
  • 브랜치 및 태그
  • 버전 간의 차이 확인
  • 로그 및 히스토리 기능

 

patch 파일을 사용하던 개발자들이 CVS를 접했을 때는 정말 신세계가 아니었을까요? 물론 현대의 Git은 정말 어마어마한 기능들을 제공해줍니다만 이 정도만 있어도 훌륭하죠! 

 

거북이 많이 보셨나요? CVS는 SVN으로 발전하게 됩니다.

 

 

 

 

 


 

형상관리 툴의 한계 그리고 빡쳐버린 토발즈 , Git의 등장

 

CVS이 등장하고나서 SVN, Mercurial 등 기능이 개선 된 툴들이 나오게 됩니다. 구조적으로 조금 다르지만 BitKeeper도 마찬기지였죠. BitKeeper는 빠른 성능으로 인해서 등장 했을 당시에 강력한 성능을 자랑했습니다. 리누스 토발즈가 리눅스 커널 개발을 하기위해 사용했고, 성공적인 리눅스 개발을 진행했습니다. BitKeeper가 유료화가 되기 전까지는 말이죠. 강력한 툴을 만든 개발자들은 BitKeeper의 라이센스를 유료로 전환을 합니다. 아마도 강력한 툴이 그들에게 큰 돈이 되어 줄거라고 생각을 했을거에요.

 

BitKeeper를 무료로 사용을하고 있던 리누스 토발즈는 이소식을 듣고 극대노하여 Git 이라는 형상관리 툴을 만들어서 오픈소스로 배포를 하게 됩니다. 이로 인해서 빠르고 강력하며 이전의 형상관리 툴들이 가지고 있는 한계를 극복한 형상관리 툴 Git이 등장을 하게 됩니다.

 

 


 

Git은 대체 불가능한 도구?

 

Git은 코드형상 관리에서 가장 많이 쓰이고 가장 강력한 기능을 가지고 있는 툴임에 불명합니다. 하지만 Git을 대체 할 수 있는 형상관리 도구들은 존재 합니다. Mercurial, SVN, Perforce, Fossil 등 많이 쓰이는 도구 들이 있는데요. Git이 초보자가 사용하기에는 어렵고 비개발자들과 협업을 해야 되는 경우도 있기 때문에 다른 형상관리 도구들이 고려 되기도 합니다. 그럼에도 불과하고 개발자들이 가장 많이 사용하고 선호하는 도구임에는 분명합니다.

 

포스팅 재밌게 읽으셨나요? 제가 조사한 내용이 조금 다를 수도 있으니 아시는 분은 댓글 달아주시면 감사드립니다!

 

다음 포스팅에서는 시대를 평정한 Git에 대해서 자세히 알아보는 포스팅을 하겠습니다.

 

2023.11.14 - [General Development Skills] - Git이란 무엇인가? - 코드 형상관리를 위한 첫걸음

 

Git이란 무엇인가? - 코드 형상관리를 위한 첫걸음

2023.11.14 - [C#] - ASP.NET Core Developer in 2023 / C# 정리하고 공부하기 ASP.NET Core Developer in 2023 / C# 정리하고 공부하기 개발자 일을 시작한지도 5년을 넘어 6년이 되어간다. 열심히 일을 했을 때도 쉬엄쉬

code-mark.tistory.com

 

반응형