일단 svn 저장소는 최신 소스를 유지하는 trunk가 있고 trunk에서 분리되어 나온 branch라는 것이 있습니다

이름만 다를 뿐 실제로는 각각 하나의 디렉토리라고 보셔도 됩니다.

개발 팀마다 svn저장소를 사용하는 방법이 조금씩 다르기 때문에

어떻게 사용하는 것이 맞다고 말씀드리긴 힘듭니다.

 

제가 사용하는 방법을 예를 들어보겠습니다.

HelloWorld라는 프로젝트를 SVN저장소에 생성합니다.

그리고 프로젝트의 소스들을 trunk에 저장합니다.

해당 프로젝트에 A라는 기능을 추가하기로 결정되었습니다.

그러면 trunk에 있는 최신 소스를 그대로 복사하여 A라는 branch를 생성합니다.

이 시점에서 trunk와 A branch는 동일합니다.

이제 A에 있는 소스들을 여러사람이 함께 수정합니다.

기능 추가가 완료되면 A에서 변경된 소스들을 trunk와 병합합니다.

이것을 merge라고 합니다. 

 

그러면 trunk는 다시 A기능이 추가된 최신소스가 됩니다.

이제 다시 HelloWorld프로젝트에 B라는 기능을 추가해야 합니다.

그러면 또 trunk의 소스를 그대로 복사하여 B라는 branch를 생성합니다.

그리고 B branch에 기능을 추가하고 완료되면 B기능에서 변경된 소스를 trunk로 merge합니다.

 

이것이 계속 반복되면서 trunk는 항상 최신소스로 유지가 됩니다.

SVN의 진정한 기능은 두 개 이상의 기능추가가 동시에 진행되어야 할 때 발휘됩니다.

즉 A, B라는 두 개의 기능을 추가해야 하는데 두 개의 작업이

서로 다른 팀에 의해서 동시에 진행된다고 가정합니다.

 

그러면 branch를 하나 생성해서 서로 같은 소스를 수정하다보면 버그가 발생해도

이게 A기능때문에 생긴 버그인지 B기능때문에 생긴 버그인지 알기가 힘들고 유지보수도 힘들어집니다.

그래서 trunk에서 branch를 두 개 생성하여 각각 따로 기능 추가를 합니다.

그리고 각각 작업이 완료되면 변경된 부분만 trunk로 merge합니다.

이렇게 되면 여러개의 작업이 동시에 진행되도 각각 서로 분리된 소스로 작업을 할 수 있게 됩니다.

 

일단 위 내용이 SVN의 대략적인 개념입니다.

 

이제 질문자님께서 질문하신 것에 대하여 이야기해보겠습니다.

파일을 수정하여 변경사항을 SVN 저장소에 반영하는 것을 commit 한다고 합니다.

 

최초에 프로젝트의 trunk를 checkout받아서 파일을 수정하다 보면 다른 사람이 해당 파일을 수정하여

commit하는 경우가 매우 자주 발생합니다.

commit은 소스 전체가 되는 것이 아니라 변경된 부분만 되는 것이기 때문에

질문자님은 update라는 명령을 사용하시면 변경된 부분만 최신 소스로 업데이트하실 수 있습니다.

매번 새로 checkout받으실 필요가 없다는 말입니다.

그런데 이때 같은 부분을 고치고 있었다면 conflict, 즉 충돌이 발생하게 됩니다.

충돌이 발생하면 해당 부분을 적절히 수정하여 충돌을 해제할 수 있습니다.

 

대략적인 감이 잡히셨는지 모르겠네요.

svn에 관한 검색을 하셔서 잘 정리된 페이지를 쭉 한 번 읽어보시길 추천드립니다

 

'자바 > 자바팁' 카테고리의 다른 글

[펌]Java 예제 - Queue(큐) Class  (0) 2014.12.01
레퍼런스까지 같이 복사하는 Clone 함수 사용법  (0) 2013.06.27
NIO 간단한 파일읽기 예제  (0) 2012.01.19
NIO가 무엇일까요?  (1) 2012.01.18
자바 NIO 강좌  (0) 2012.01.18

+ Recent posts