2010-07-02 3 views
2

다음 시나리오가 있다고 가정합니다. URL X의 오픈 소스 프로젝트를 복제했습니다. 이제 로컬 복제본이 생겼습니다. 나는 로컬 클론에 약간의 변화를 일으켜 일을 시도하고 그들을 지역에서 커밋했다. 이제 내가 원하는 것은 다음과 같습니다 :개인 변경을위한 유스 케이스

오픈 소스 프로젝트 X에서 업데이트를 얻고 싶습니다. 변경 사항을 전혀 적용하지 않고 최신 코드를 모두 얻고 싶습니다. 하지만 내 변경 사항을 태그에 저장하여 나중에 가져올 수 있기를 바랍니다. 그리고 저는 이것을 위해 복제품을 분리하고 싶지 않습니다. 내 복제본에 모든 복제본을 넣고 싶습니다. 지금은

내가 다음 않았다

  1. hg tag
  2. 풀 &와 태그 내 변경 내용을 병합 URL의 최신 버전에 URL X
  3. 되돌리기 저장소에서 최신 코드는 X

그러나 나는 이것이 좋은 방법이 아니며 우회 길이라고 느낍니다. 더 좋은 방법이 있다고 생각합니다. 제발 제안 해 줄래?

답변

3

태그 대신, bookmark을 사용합니다. Mercurial 1.8 이상을 사용하는 경우 이미 북마크 기능이 내장되어 있습니다.

[extensions] 
bookmarks = 

[bookmarks] 
track.current = True 

지금 프로젝트의 복제 수 :

hg clone http://bitbucket.org/user/X 
cd X 

을 멀리 해킹 :

# edit, edit, edit... 
hg commit -m 'Great new feature!' 

그렇지 않으면, 당신은 먼저 ~/.hgrc 파일에 다음을 넣어 확장을 활성화해야 이 changeset에 북마크를 추가하십시오.

hg bookmark mywork 

이것은 태그와 비슷하지만 북마크의 장점은 새로운 커밋을 만들 때 함께 움직이는 것입니다. 이것은 책을 읽고 당신과 함께 북마크를 옮길 때와 같습니다. 북마크가 생성되면 북마크 된 changeset으로 돌아가려면

hg update mywork 

을 할 수 있습니다.

상류 저장소에 변경이되었을 때, 당신이 끌어와 자신의 브랜치로 병합 : 북마크 앞으로 이동 한 것입니다 지금 방금 만든 병합 변경 집합을 가리키는

hg update mywork # if necessary 
hg pull 
hg merge 
hg commit -m 'Merged new upstream changes.'  

. 그런 다음, X의 버전으로 업데이트하려면 당신이 변화를 가져온 후

hg update --rev -2 

이 그것을 할 것입니다 - 이것은 X.

의 끝이었다 병합 이전에서 이전 팁 변경 집합에 업데이트
+0

고마워요,하지만 북마크가 개선 된 태그입니다, 맞습니까? 내 말은, 아마 내가 찾고 있던 것은 hg update - rev? 되 돌리는 대신에? – zaharpopov

+0

zaharpopov : 오, 저장소의 Revert Repository를 최신 버전의 X로 수정 한 hg update를 읽었습니다. 두 명령에 대한 도움말을 읽으십시오 - 짧은 버전은'hg update' 업데이트입니다 파일 내용 * 및 *는 작업 사본 상위 개정판을 변경하는 반면'hg revert'는 파일 만 업데이트합니다. –

관련 문제