특정 리비전으로 업데이트 하거나, 브랜치를 전환하거나, 원격 저장소에서 변경내역을 받아와 merge를 하고 싶거나 할 경우,
working directory에 변경내역이 있으면 안됨.
방법은 1. 커밋을 하거나, 2. --clean 옵션을 이용해서 이전 변경내역을 다 날리는 건데 둘 다 부담스러움.
이럴 때 현재 변경내역을 일단 어딘가 짱박아두고 원하는 작업을 수행한 다음 다시 복구할 수 있도록 해주는 것이 shelve extension임.
[준비물]
Mercurial의 버전이 2.8 이하일 경우 shelve extension을 따로 설치해줘야 함.
아래 링크 참조. (사실 여기 사용법도 다 있음..)
http://mercurial.selenic.com/wiki/ThirdPartyShelveExtension
위 링크로 가면 버전별로 적합한 hgshelve.py 파일의 리비전 번호가 링크로 걸려 있는데,
해당 bitbucket 저장소로 가서 좌측의 Source 메뉴를 선택하고,
우측 페이지의 좌상단 'default'라고 되어 있는 탭을 클릭한 후 Tags 탭을 선택하고,
자신의 Mercurial 버전에 맞는 tag를 선택함.
그리고 hgshelve.py 파일을 클릭하고 해당 내용을 복사한 다음 로컬에 새 파일을 하나 생성하여 복사한 내용을 붙여넣기 한 후 해당 파일을 hgshelve.py 라고 한 후 저장.
그리고 나중에 설정하기 편하게 C:\Program Files\TortoiseHg 폴더에 집어넣자.
[설정]
.hg/hgrc 파일이나 C:\Users\사용자이름\mercurial.ini 파일을 열어 아래 내용 추가
[extensions]
hgshelve = hgshelve.py
[사용법]
// 변경내역 확인
C:\rep> hg status
M mod1.txt
// shelve
// 변경 파일 하나하나에 대한 설정이 가능한데 a 라고 입력하면 그냥 전체 다 shelve 시킴
C:\rep> hg shelve
diff --git a/mod1.txt b/mod1.txt
12 hunks, 193 lines changed
shelve changes to 'mod1.txt'? [Ynsfdaq?]
// 하려했던 작업을 마저 하고....
// unshelve
C:\rep> hg unshelve
unshelve completed
// 확인
C:\rep> hg status
M mod1.txt
// 그냥 전부 shelve 하기
C:\rep> hg shelve --all
// shelve된 리스트 보기
// 아무 이름도 지정하지 않고 shelve 했으므로 default 라고 하나만 나옴
C:\rep> hg shelve --list
default
// 이름을 지정하고 shelve 하기
C:\rep> hg shelve --all --name MY_SHELVE
// 확인
C:\rep> hg shelve --list
MY_SHELVE
// 이름을 지정하고 unshelve 하기
C:\rep> hg unshelve --name MY_SHELVE
'버전관리' 카테고리의 다른 글
[Mercurial] hg bisect, hg annotate 를 이용한 범인, 범행기록 색출법 (0) | 2014.08.01 |
---|---|
[Mercurial] log 관련 케이스별 예제 (hg log examples) (2) | 2014.07.31 |
[Mercurial] extdiff를 이용하여 원하는 프로그램으로 diff 하기 (extdiff, cmd) (0) | 2014.07.31 |
[Mercurial] 원격 저장소 지정 (remote repository) (0) | 2014.07.31 |
[Mercurial] 저장소 파일 추가/삭제 (add, remove, addremove, forget) (0) | 2014.07.31 |