svn 문의 - 두대의 서버
글쓴이: auditory / 작성시간: 수, 2008/04/02 - 3:32오후
svn 관련 문의드립니다.
상황은 제가 관리할 수 없는 프로젝트에서 소스를 가져와서 제가 임의로 변경한다음에,
제 svn서버로 변경된 소스를 관리하고 싶은 상황입니다.
소스를 다른 svn서버로 부터 가져와서, 제가 수정한 다음에, 제 svn 서버에 변경사항을 커밋하고 싶습니다.
그러니깐 update는 서버1에서, commit은 서버2에다가 하고 싶은데 이런게 가능할까요?
아. 물론 제가 커밋한 내용을 받아와야하니깐
update는 두 서버에서 모두 이루어져야하겠군요..
Forums:
요즈음 인기가
요즈음 인기가 높아지고 있는 분산형 버전 관리 시스템을 써보시는 것은 어떨까요?
원격 저장소는 그대로 Subversion으로 두고 hgsvn이나 git-svn 등으로 로컬에서 관리할 수 있을겁니다. SVK는 아예 Subversion 전용이고요.
만약 관리 불가능한
만약 관리 불가능한 서버에서 한번만 가져올거라면,
그냥 그대로 땡겨와서 새 서버에다 import해버리면 되겠죠.
만약 기존 저장소에서 계속 업데이트를 받아야 한다면, ditto님 말대로 분산형 버전관리를 사용하는 것이 좋을 것 같아요.
기존 저장소도 계속 버전이 올라갈테고, svn에서 두가지 브랜치를 계속 관리하는건 생각보다 꽤 귀찮은 일이거든요. (편한 툴이 있는지는 모르겠습니다마는)
언제나 삽질 - http://tisphie.net/typo/
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
기존 저장소에서
기존 저장소에서 계속 업뎃을 해야하는 상황입니다.
대신 기존 저장소에서 받아오는 내용은 수정을 하지 않아도 될것 같습니다.
결국 서버1에서 revision 올라가는것을 서버2에서 같이 기록을 했으면 좋겠다는거네요.
svn도 시작한지 얼마 안되서 다시 분산형으로 옮기는건 현재로서는 좀 부담스러워서,
나중에 시도해봐야겠네요..
답변 감사합니다..
기존 저장소에서
기존 저장소에서 변경된 내용을 수정을 안한다고 하셨지만,
다음 그림을 잠시 보면
메인 :
; 버전1 ----> 버전 2
; |
; ----> 버전 1.1 -> 버전 1.2
따로 운영:
버전 1.1은 버전 1에서 왔고, 그걸 수정한건데요. 버전 1.2까지 고친 상태에서 버전2를 적용한다면, 머지 'MERGE' 를 해야하는거죠.
서브버전 매뉴얼에 보면 서드파티 브랜치를 유지하는 방법이 있긴 한데요. 생각보다 귀찮습니다. 게다가 머지 커맨드가 꽤나 길어지죠.
그 점에서 분산형은 머지가 상대적으로 쉽거든요. (컨플릭나는 경우 귀찮기는 둘 다 마찬가지지만)
언제나 삽질 - http://tisphie.net/typo/
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
메인:;버전1.1 ->
메인:
;버전1.1 -> 버전1.2 -> 버전1.3
따로운영
;버전2.1(==1.1)
로컬;
현재버전 1.2 -> 1.3으로 업데잇한 후, 버전 2.1에 커밋
따로운영
;버전2.1 -> 버전2.2(==버전1.3)
이런게 가능하지 않을까요?
1.1==2.1이라면 수정을
1.1==2.1이라면 수정을 안하고 커밋하신게 되겠지요. 처음에 쓰실 때 수정을 해서 커밋한다고 하셨는데,
만약 그게 아니라 그대로 커밋하는거라면 리포지터리를 매번 받아와서 그대로 커밋하는게 되지 않겠어요?
어떤 하나의 리비전에서 두가지 다른 방향의 수정이 생겼을때가 문제라는 거죠.
언제나 삽질 - http://tisphie.net/typo/
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
네 처음글에서는
네 처음글에서는 수정을 해서 커밋을 한다고 했는데..
두번째 글에서 썼듯이 수정을 안해도 되는 상황이 될것 같습니다..
"리포지터리를 매번 받아와서 그대로 커밋하는" 좋은 방법이 없는지가
최종적인 질문이 된 셈입니다..
기존 서버에 있는 내용이 호환성을 계속 가지고 버전업되면 상관없지만.
혹시 그 호환성이 깨질경우 제가 실제로 사용한 버전과의 싱크를 맞추기 위해서 필요한 상황입니다.
기존서버에서 익스포트해서 로컬에 있는걸 덮어쓰고 새서버에 커밋하면 대략은 될거 같은데.
파일이 지워지고 새로 추가되는 경우에는
일일이 확인을 해야하는 번거로움이 있습니다.
이걸 쉽게 해결하는 방법이 있을까요?
svn 명령어를 이용해
svn 명령어를 이용해 원본 레포지토리의 sync 레포지토리를 본인 서버에 만드시구요.
원본 레포지토리의 hooks 디렉토리아래 post-commit 후크를 아래와 같은식으로 만들어 놓으면,
svnsync sync svn://host --non-interactive
원본 레포지토리에 commit을 할때마다 sync레포지토리에 자동으로 동기화가 이루어집니다.
자세한것은 subversion, svn, sync, hook, hooks, post-commit 등으로 검색해보세요.
댓글 달기