티스토리 뷰

728x90
반응형
사례1.

혼자서 프로젝트 개발작업을 하고 있는데

프로그램에 버그가 발견되어 소스코드 이곳저곳을 마구잡이로 고치다가 사소한 오타나 실수로 인하여 버그가 생긴 것을 발견.

소스코드 변경전에 백업을 하지 않았는데 소스코드를 원래대로 되돌려야하는 상황.

그런데 어디를 어떻게 바꾸어야 하는지 기억이 나지 않는다.



사례2.

A와 B가 팀을 이루어 팀프로젝트로 Z프로젝트를 개발.

같은 소스를 공유하여 작업을 한다.

A가 D파일에 새로운 기능을 넣기위해 열심히 코딩중이다.

B가 다른 파일을 수정작업중에 D파일의 모듈을 수정해야할것이 생겨서 D파일이 A에 의해 수정중인지 모르고

열어서 수정을 한다 .

그런데 수정작업중 저장을 하지 않고 점심시간이 되어 점심을 먹으러갔다.

그와중에 A는 점심도 먹지 않고 열심히 D파일에 새로운 기능을 넣어서 수정을 완료했고,

어느새 밥먹고 돌아온 B는 자신이 열어놓은 D파일을 수정 마무리 하여 저장을 했다

A가 다시 D파일을 열었을땐..................... 으아아아아악!






이 두가지의 사례는 프로젝트를 진행하면서 흔히 겪는 일들입니다.

프로젝트를 진행하면서 백업을 주기적으로 해야한다는 사실은 누구나 공감하나 여간 번거로운 일이 아닙니다.

항상 백업잘할때는 문제가 없다가 백업을 안했을때 문제가 터지는 법이죠.


백업을 한다고 해도 여간 번거로운일이 아닙니다.

프로젝트의 파일크기가 큰 경우 용량을 잡아먹는건 예사고 백업하는데 드는 시간도 만만치 않습니다.

그리고 여러프로젝트를 동시 진행할때 백업 파일을 관리하기가 쉽지 않고

각각의 백업마다 어떠한 상황에서 백업을 했는지 일일이 기록하는 것도 예삿일이 아닙니다.



그렇기 때문에 버전관리 시스템이 필요합니다.



버전관리 시스템을 사용할 경우

SVN의 경우 내가 커밋(commit)을 한 순간에 새로운 리비전으로 소스코드가 업데이트 되기 때문에

이러한 업데이트 내역을 토대로 이전 리비전으로 소스코드를 롤백(원래대로 되돌림)을 할수도 있고

커밋(commit) 마다 로그를 남길수 있어 어떠한 변경사항들이 있었는지 추적하기가 쉽습니다.

또한 각 개발자들이 별도로 백업을 하지 않아도 되고 개발버전과 릴리즈 버전을 섞이지 않고 쉽게 관리할수가 있습니다.



하지만 이렇게 좋은 버전관리시스템도 사용하기 위해서는 배워야 합니다.

배움이 귀찮은 개발자여. 개발자이기를 포기하라!



버전관리 시스템에는 다음과 같은 용어가 사용됩니다.


저장소(Repository : 레파지토리) : 
- 모든 프로젝트의 프로그램 소스들은 바로 이 저장소 안에 저장 됩니다.
- 소스 뿐만 아니라 소스의 변경사항도 모두 저장 됩니다.
- 네트워크를 통해서 여러 사람이 접근 가능하며
- 버전 관리 시스템 마다 각각 다른 파일 시스템을 가지고 있고,
- 한 프로젝트마다 하나의 저장소가 필요합니다


체크아웃(checkout) :
- 저장소에서 소스 및 버전 관리 파일들을 받아 오는 것을 말합니다.
- 체크아웃에도 권한을 주어 소스코드 접근을 제어할수 있습니다.


커밋(Commit) :
- 체크아웃한 소스를 수정, 파일 추가, 삭제를 한 후에 저장소에 저장하여 갱신하는 것입니다.
- CVS의 경우 수정한 파일의 리비전이 증가하고, Subversion(SVN)의 경우 전체 리비전이 1증가하게 됩니다.


업데이트(update) :
- 체크아웃을 해서 소스를 가져왔다 하더라도 다른 사람이 커밋을 하면 프로젝트의 소스코드가 달라집니다.
- 이러한 경우 소스코드를 업데이트를 하여 저장소에 있는 최신 버전의 소스를 가져와야합니다.
- 업데이트는 이것을 체크하여 저장소에 저장된 최신 버전의 소스코드와 내가 가지고 있는 소스코드를 비교하여 변경된 부분만 가져 옵니다.


리비전(Revision) :
- 소스 파일을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가합니다.
- Subversion의 경우 파일별로 리비전이 갱신되지 않고 한번 커밋으로 전체 리비전이 변경됩니다.
- 리비전을 통해 프로젝트 진행 상황(버전)을 알 수 있습니다.


임포트(Import) :
- 아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업입니다.


익스포트(Export) :
- 체크아웃과는 달리 버전 관리 파일들을 뺀 순수한 소스 파일을 받아올 수 있습니다.
- 소스를 압축하여 릴리즈를 할 때 사용한다
728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함