안녕하세요. SVN 몇가지 질문들 입니다.
글쓴이: crusien / 작성시간: 금, 2008/03/21 - 2:20오후
현재 PowerBuilder9 버젼으로 개발을 하고 있습니다. 버젼 관리 시스템을 구축해 볼려고 여기 저기 알아 보다가 SVN을 선택하고 2003서버에 서
버구축도 해놓았습니다.
클라이언트 툴은 TortoiseSVN으로 선택했구요. 일단 혼자 사용하기에는 전혀 무리가 없지만 현재 개발자가 4명이 개발하고 있으며, 그 중에 두
명은 하나의 오브젝트파일을 같이 다루기 때문에 항상 충돌이 일어 날 수 밖에 없습니다. WinMerge나 diff등 파일 비교는 오브젝트 바이너리라
서 아예 불가능한것 같구요. 그래서 Merge기능을 써볼려고 하는데 만약 클라이언트 저장소인 project/trunk/에 서버로부터 체크아웃받은게 있
고 이것을 project/branches/v1.0에 브랜치를 만들어서 소스 수정한후 병합 옵션에서 시작:project/trunk 종료:project/branches/v1.0
실제저장:project/trunk로 하였을때 소스 내용이 바뀌었음에도 불구하고 병합후에 trunk소스를 확인해 보면 변화가 없군요.
원래 오브젝트 타입은 병합 자체가 안되는건가요? 아니면 제가 잘못이해 하고 있거나 하고 있는건 아닌지 궁금 합니다.
Forums:
첫번째로 오브젝트
첫번째로 오브젝트 파일은 병합되지 않습니다.
* 충돌이 발생하고, 두개의 리비전(이전과 새로운)중 하나를 선택하셔야 합니다.
시작과 종료를 정확하게 이해해야만 할 것 같습니다.
project/trunk 에서 계속 어떤 작업을 하고 있습니다.
어떤 팀원이 새로운 기능을 구현할려고 하는데 작업량이 꽤 많습니다.
그리고 구현이 완료되었을때, 제품에 적용할지의 여부도 불투명합니다.
* 해당 팀원은 project/trunk를 project/branches/new_func 으로 복사해서 project/branches/new_func 에서 작업을 진행합니다.
드디어 new_func 작업이 완료되었습니다. 그리고 제품에 적용하기로 결정이 되었습니다.
그럼 new_func의 처음부터 끝까지(완료된 시점까지)를 trunk에 머지하게 됩니다.
* 즉, 시작과 끝 위치가 project/branches/new_func 이 됩니다.
콘솔 명령어로 보면
* 위에서 33은 new_func이 복사된 리비전입니다.
* 위에서 77은 new_func이 완료된 리비전입니다. 즉 new_func 디렉토리에 대한 HEAD 리비전입니다.
도움이 되시길 바랍니다.
고맙습니다...
전 질문자도 아니고 svn을 쓰고 있지도 않습니다만, (Perforce쓰고 있습니다.)
제가 고민하던 것에 대한 답입니다.
하지만 바이너리 화일에 대해선 완벽하게 공동작업을 할수 없는거네요.
한명이 해당 바이너리 화일을 락을 걸든지 해서 그 개발자 일이 끝날때까지 기다렸다가 Trunk에 반영하고 나면
그제서야 그 다음 사람이 그걸 Trunk로 부터 받아서 작업을 하는 수밖에는 없는것 같네요.
Branching을 한다고 해도 A와B 개발자 모두 해당 바이너리 화일을 여러번 수정하고 한다면 나중에 충돌이 생기는 건 피할수가 없겠네요.
그 중에 두명은
제가 본문에서 놓친게 있는데, 위의 말이 어떤 뜻인지가 중요한 것 같습니다.
제가 PowerBuild를 사용해본적이 없어서 잘 모르겠는데요..
C나 C++의 경우에 오브젝트 파일이나 실행파일(소스파일이 아닌)은 프로젝트에 넣어서는 안됩니다.
오브젝트 파일이나 실행파일들은 svn:ignore 속성에 추가해주어야 하죠.
만약 위에서 언급하신 충돌이 발생하는 오브젝트 파일이 다음에 언급한 것과 같은 것이라면
버전관리에 넣어서는 안됩니다.
* 소스 코드로부터 빌드시에 만들어지는 파일이나 디렉토리(obj, exe, lib, Debug, Release)
* 소스 코드가 아닌 개발 환경이 변경되면 수정되는 파일들
(VC 기준으로 , *.aps, *.ncb, *.opt, *.plg, *.clw, *.positions, README.TXT)
이런 파일들은 절대로 버전관리에 들어가서는 안됩니다.
오히려 이런 파일들은 svn:ignore 속성에 추가해야합니다.
댓글 달기