2012-04-23 2 views
5

파일을 다른 디렉토리로 이동 한 후에 더 이상 두 개정 사이의 차이점을 표시 할 수 없습니다. 예컨대 :이동/이름 바꾸기 후 Mercurial diff가 작동하지 않음

hg init 

touch a 
hg add a 
hg ci -m "Added a" 

echo "Bli" >> a 
hg ci -m "Bli" 
echo "Bla" >> a 
hg ci -m "Bla" 
echo "Blub" >> a 
hg ci -m "Blub" 

hg diff -r 0 -r 1 a 

결과 :

diff -r 8603b08f5a64 -r 16675581549e a 
--- a/a Mon Apr 23 09:03:25 2012 +0000 
+++ b/a Mon Apr 23 09:03:25 2012 +0000 
@@ -0,0 +1,1 @@ 
+Bli 

하는 내가 기대했던 것입니다.

mkdir b 
hg mv a b/a 
hg ci -m "Moved a into b" 
cd b 
hg diff -r 0 -r 1 a 

이 아무것도에 결과 (전혀 출력) : 그러나 지금 파일 "A"디렉토리에 "B"를 이동할 때. 나는 또한 git algo를 사용하려고 시도했다. algo :

hg diff --git -r 0 -r 1 a 

다시 출력이 없다. 인 로그가 확인 될 것으로 보인다 :에서

hg log --follow a 

결과 :

changeset: 4:cb8185829bfd 
tag:   tip 
user:  XXXXXXXXXXXXXXXXXXXXXXXXXXXX 
date:  Mon Apr 23 09:08:12 2012 +0000 
summary:  Moved a into b 

changeset: 3:4d1ba89885c3 
user:  XXXXXXXXXXXXXXXXXXXXXXXXXXXX 
date:  Mon Apr 23 09:03:26 2012 +0000 
summary:  Blub 

changeset: 2:e9126dbb50b2 
user:  XXXXXXXXXXXXXXXXXXXXXXXXXXXX 
date:  Mon Apr 23 09:03:26 2012 +0000 
summary:  Bla 

changeset: 1:16675581549e 
user:  XXXXXXXXXXXXXXXXXXXXXXXXXXXX 
date:  Mon Apr 23 09:03:25 2012 +0000 
summary:  Bli 

changeset: 0:8603b08f5a64 
user:  XXXXXXXXXXXXXXXXXXXXXXXXXXXX 
date:  Mon Apr 23 09:03:25 2012 +0000 
summary:  Added a 

는 DIFF 파일을 이동 한 후 작동하지 않는 이유는 어떤 생각을 사람을 했습니까? 귀하의 도움을 크게 주시면 감사하겠습니다.

+0

BTW : Mercurial 2.2-rc – meisterplanlos

+0

나는 Mercurial에서 디렉토리를 추적하지 않으므로 'hg add b'는 'b'가 빈 디렉토리 일 때 아무 것도하지 않는다. –

+0

@ Martin : 감사. – meisterplanlos

답변

3

오늘날의 Mercurial에서는 어렵거나 불가능합니다. 난 당신이 얻을 수있는 가장 가까운 의욕은 diff (--patch)를 표시하기 전에 사본을 뒤로 (--follow) 추적합니다

hg log --follow --patch -r 1 a 

생각합니다. 일반적으로

, 의욕 만 파일 이름을 추적, 파일 정체성를 추적하지 않습니다. 개정 번호로 정보를 조회 할 때, Mercurial은 개정을 먼저 찾은 다음 해당 개정의 파일 이름을 찾으십시오. 그래서 hg cat -r 0 a 당신에게 즉

hg update -r 0 
cat a 

같은 결과를 줄 것이다, 그 결과는 현재 작업 디렉토리 부모의 독립적입니다.

+0

다시 한 번 감사드립니다. 이것은 동작을 설명합니다. 로그를 통한 해결 - 패치는 콘솔에 좋습니다.시간이 있으면 MercurialEclipse를 살펴보고이 작업을 해킹 할 가능성이 있는지 확인합니다. – meisterplanlos

0

b/a이 리비전 1 또는 리비전 0에 존재하지 않기 때문이라고 생각합니다. hg diff -r 0 -r 4 명령을 b 폴더에서 실행하면 예상되는 결과가 생성됩니다.

작업 복사본의 루트에서 hg diff -r 0 -r 1 a을 실행하면 예상 출력도 표시되어야합니다.

+0

오른쪽. 이것은 합리적으로 들릴뿐만 아니라 내 질문에 답하는 것 같습니다. 불행히도, 그것은 내 문제를 해결하지 못합니다. CVS에서 Mercurial로 변환 한 후에는 루트 폴더에 있어야하는 파일들이 들어있는 디렉토리가 있습니다. 이제는 MecurialEclipse를 통해 직접 액세스 할 수있는 기록을 잃지 않고 루트 폴더로 이동할 수 없습니다. 나는. "마우스 오른쪽 버튼 클릭"-> 팀 -> 기록 -> "두 개의 개정판 선택"-> "오른쪽 클릭"-> "서로 비교"를 통해 Eclipse의 개정판 차이점에 액세스하려고합니다. – meisterplanlos

관련 문제