2010-01-18 1 views
7

로컬 Mercurial 리포지토리 (로컬 네트워크 또는 인터넷을 통해)를 복제하여 복제 해 봅니다.
나는 내 복제품에서 일하고, 몇 가지 커밋을 한 다음, 내 변화가 의미가 없으므로 다시 시작해야한다는 것을 알게되었습니다.머큐리얼 리포지토리를 버전 X (복제하지 않음)로 "리셋"하는 가장 빠른 방법

그래서 동일한 소스 저장소에서 "신선한"복제본을 다시 만들고 싶습니다.
기본적으로 실험을 시작하기 전에 로컬 레포를 해당 지점으로 "재설정"하고 싶습니다.

가장 빠르고 가장 빠른 방법은 무엇입니까?

가장 간단한 방법은 새 복제본을 만드는 것이지만, HG는 전체 repo와 전체 기록을 네트워크를 통해 다시 복사합니다.
Repo가 너무 큰 경우 시간이 오래 걸리고 네트워크가 차단됩니다.

나는 같은 폴더에 새로운 복제본을 만들려고했는데 (HG가이를 인식하고 변경된 파일과 기록 만 업데이트하기를 바랬다) 전체 복제본을 복사하는 것으로 보인다.

"hg 롤백"할 수는 있지만 마지막 커밋 만 롤백합니다. 커밋을 여러 번했다면 마지막 커밋 만 되돌릴 수 있습니다. 따라서 커밋을 시작하기 전에 repo를 원래대로 되돌릴 수는 없습니다.

아이디어가 있으십니까?
다시 전체를 복제하는 것 외에 다른 방법이 있습니까?
: 두 번째 버전

답변

17

gizmo가 제안하는대로 hg strip을 사용하여 끝내 겠지만 기존의 방법은 원격 저장소가 아닌 자신의 로컬 저장소에서 다시 복제하는 것입니다. 예를 들어, 당신이 체크 아웃하는 경우 '저장소'이고 당신은 당신이 할 것 좋아하지 않아 변경 집합 99 및 100이 추가되었습니다 : 순간 근처에 있어야한다

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

합니다.

1

hg update -r <changeset number> 예를 들어 hg update -r 1을 (주 TortoiseHg와 솔루션 좋을 텐데 ... 내가 명령 줄을 통해이 선호). hg log을 사용하여 원하는 버전을 확인할 수 있습니다

+2

실제로 시스템을 복제했을 때와 같은 상태로 롤백하지는 않습니다. '어제'이후로 작성된 커밋을 가지고있을 것입니다. –

8

Mq Extension을 활성화하면 더 이상 원하지 않는 기록을 삭제할 "hg strip"명령을 사용할 수 있습니다.
자세한 내용은 Strip command wiki 페이지에서 확인하십시오.

+0

이것이 저에게 효과적입니다. –