2012-12-10 3 views
4

Mercurial 대기열은 패치에 관한 것이고 패치는 파일 이름 변경에 대해 아무것도 모릅니다. 이것이 Mercurial Queues가 파일 이름 변경을 지원하지 않는 이유입니까, 아니면 파일 이름을 잘못 변경 한 것입니까? foo이라는 파일 하나만 수정하는 패치 대기열에서 작업했습니다. 지금은 hg mv를 통해 파일을 4 패치와 이름을 다시 이동합니다Mercurial 대기열을 사용하여 파일의 이름을 바꾸는 방법은 무엇입니까?

hg qpop 4  # Unapply all patches until patch 4. 
hg mv foo bar # Rename file and led Mercuial know about it. 
hg qrefresh # Should apply changes to unapplied patch 4. 
hg qpush -a # Should apply all unapplied patches. 

나는 다음과 같은 오류 얻을 :

unable to find 'foo' for patching 
1 out of 1 hunks FAILED -- saving rejects to file foo.rej 
patch failed, unable to continue (try -v) 
patch failed, rejects left in working dir 
errors during apply, please fix and refresh 5.diff 

그래서 내가 파일을 처리 할 방법을 의욕 대기열로 이름을 변경을? Mercurial 의 이유로 파일 이름 변경을 처리합니다 (이름 바꾸기 후 파일 편집에 대한 전체 기록을 잃어 버릴 수 있음).

이 업데이트

그냥 hg histedit 접는 변경 집합 및 hg collapse 또한 파일 이름 변경의 정보를 잃을 것으로 나타났습니다 파일 대신 이름을 변경 한 새로 나타나, 나는이 같은 이유로 추측 . 그 개인 정보를 잃어 버리지 않고 Mercurial에서 개인 체인지 세트를 접을 수없는 것 같습니까?

업데이트 2

정보를 이름을 잃어버린없이 개인 체인지를 붕괴하는 것은, 예를 들어 hg rebase--collapse 옵션 가능합니다 밖으로 찾을 수 hg rebase -s 5 -d 4 --collapse. 다른 명령이 정보 이름 바꾸기를 계속해야한다는 문제는 여전히 빈 상태이지만 hg rebase 명령을 사용하면 적어도 원하는 결과를 얻을 수있는 방법이 있습니다.

+0

가'은 HG가 mq' 도움이 있기 때문에, 이상한의 종류를 보이는 정확히 사건에 대해 메모를 가지고 : 기본적으로 _ ", MQ 자동 것이다 레코드 모드, 바이너리 파일 또는 빈 파일 생성 또는 삭제를 피하기 위해 필요한 경우 git 패치를 사용하십시오. "_ – develop7

답변

0

Is this the reason why Mercurial Queues don't support file renames,

no.

or am I doing something wrong renaming the file?

no.

예, 체인 의 패치들은 bar 될 것입니다 나중에 foo 파일을 준비하지만, 경우, 문제가 있지만 인해 다른 이유로 것이다 : 패치가 독립적이며, 모든 각 패치의 변화에 ​​대해 아무것도 몰라 다른 것들은 별도의 패치에서 일련의 작업이 아니라 상황에 맞게 작업합니다. 당신은 제대로 이름을 수행하지만,이 변경 집합 된 내용에 준비, 나중에을 변경 집합 무효화

+1

그래서 Mercurial 대기열에서 파일 이름을 처리하려면 어떻게해야합니까? – Iodnas

+1

어쩌면 (짐작할 만하다. atm을 검증 할 수 없다) 당신은 수동으로 git 스타일의 diff (이름 바꾸기 지원)를 만들고, .hg/patches/somename에 넣고, somename >> .hg/patches/series를 echo 해 볼 수있다. 적용됩니까? –

+0

git 스타일의 .patch 파일을 생성하면 적어도 한 번 가져온 이름 바꾸기 정보가 유지됩니다. – Thymine