윈도우/윈도우 '잘'쓰기

Mercurial (Hg) 쓰기

ForceCore 2008. 9. 14. 23:41
http://tortoisehg.sourceforge.net/
윈도우에서는 TortoiseHg를 설치하면 command line 도구 모두 설치된다.
비스타에서는 이 파일이 Hg의 제어를 받는지 안 받는지 잘 그래픽적으로 update되진 않음.

아.. Mercurial이 뭔지 짚고 넘어가야 하겠네;;

CVS나 SVN와 마찬가지로 version control을 하는 시스템이다.
근데... CVS/SVN과 다른 점은 중앙 서버가 없다는 점이다 (!)

자기 컴퓨터에 commit/update를 하게 되고 (-_-...) 그 모든 정보는 자기 컴퓨터의 디렉토리에 저장된다.
하지만 다른 유저와 동기화를 해야 하는 시점이 되면,
그 정보를 담은 것들 차원의 동기화가 이루어진다...
이 부분은 push/pull이라고 CVS/SVN에는 없는 개념이다.

http://www.selenic.com/mercurial/wiki/index.cgi/KoreanTutorialInstall
이것부터 따라 해보기를 권한다.

으음;;;
나머지 version control system들과...
tortoiseSVN하고 거의 동일하고, add/update 이런 것 까지 똑같다.

repository를 생성하려면 폴더에 오른 클릭을 하고 create repository here.
그 이후부터 그 폴더에서 파일을 add/delete update/commit 등의 작업하면 됨.

update는 언제 이루어 지는고 하니;;
아직 안 했지만 push/pull작업으로 repository간 동기화를 했어도
이 작업에서 update/commit까지 이루어 지지는 않는다...
이 때문에 update와 commit이 또 필요한 것이다.

위의 작업은 평상시에 이미 했으리라고 믿는다.
이제 다른 것들과 다른 repository간 동기화를 할 차례인 것 같군.

repository로 쓰이는 폴더에 오른 클릭을 해보자.
TortoiseHG에 보면 Web server 기능이 있을 것이다.
이 녀석은, 내 컴퓨터를 웹서버로 사용하여 다른 녀석을이 내 컴퓨터에 대고
repository 동기화를 할 수 있도록 해주는 기능이다.

이것을 돌리고 있는 동안에
다른 녀석이 TortoiseHG의 synchronize기능을 사용하면 됨.
서버 쪽의 repository는
http://서버ip:서버포트/
이렇게 입력해주면 된다.
incoming/outgoing 을 해보면 두 rep이 어떻게 다른지 볼 수 있고
push/pull을 하면 실제로 싱크가 일어난다.

두 repository간 충돌은 어떻게 해결되는지 아직 모르겠다.
그런 경우는... 아직 안 해봄 ㅋ0ㅋ;
상식적으로 생각해보면.
먼저 push하는 쪽을 기준으로 conflict가 계산되려나?
conflict가 뜨면 다른 쪽에서는 pull해가서
resolve한 뒤 다시 push를 하는 과정을 밟을 것 같다.

실제로 해보면...
어느 한 쪽에서 pull을 하면, 그 pull을 한 쪽에서는 다시 push를 할 수 없다.
update를 해서 뭔가 충돌난 것을 수정해야 함.
hg update를 시키면...
cross branches라고하면서 update가 안 됨. hg merge를 해야 한다.
특히 바이너리 파일은 조심해야 됨 -_-;; 어느 한 쪽으로 아주 overwrite되는 수가 있다.
hg merge를 하면 두 개의 "branch"... 같은 데서 나아가서 두 유저에 의해 다른 상태로 개발된 두 상태가 합쳐지면서, hg commit뒤에는 이제 다시 push 할 수 있게 된다.

web server를 디폴트 옵션으로 돌리면 서로 push는 못 하고
서로 pull 해가는 방법으로 동기화 할 수 있다.