hg diff -g показывает различный вывод между слиянием (до фиксации) и журналом изменений (после фиксации) - PullRequest
1 голос
/ 11 октября 2010

Я использую ветки в нашем Mercurial репозитории и заметил, что переименования, сделанные в отдельных ветках, не отображаются до фиксации после слияния с веткой по умолчанию.Однако после коммита, когда вы вводите команду hg diff -g, она правильно показывает переименование.

Следующий фрагмент кода показывает, что я имею в виду.Новый репозиторий создается.Я создаю один файл по умолчанию.Затем я создаю ветвь с именем branch-one.Я переименовываю файл в первой ветке и возвращаю это изменение по умолчанию.Перед принятием значения по умолчанию я делаю diff, чтобы увидеть, что это за изменения, и заметить, что он не принимает переименование, а вместо этого сообщает об удалении, а затем о добавлении.Но после коммита я снова проверяю diff, и на этот раз о правильном сообщении переименовывается.

Есть ли способ правильно сообщить diff до коммита?

D:\hgsource>hg init SO-question

D:\hgsource>cd SO-question

D:\hgsource\SO-question>echo test file content > test.txt

D:\hgsource\SO-question>hg commit -A -m "first commit"
adding test.txt

D:\hgsource\SO-question>hg branch branch-one
marked working directory as branch branch-one

D:\hgsource\SO-question>hg rename test.txt new-file.txt

D:\hgsource\SO-question>hg status
A new-file.txt
R test.txt

D:\hgsource\SO-question>hg commit -m "renamed file in branch-one"

D:\hgsource\SO-question>hg update default
1 files updated, 0 files merged, 1 files removed, 0 files unresolved

D:\hgsource\SO-question>hg merge branch-one
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)

D:\hgsource\SO-question>hg diff -g
diff --git a/new-file.txt b/new-file.txt
--- /dev/null
+++ b/new-file.txt
@@ -0,0 +1,1 @@
+test file content
diff --git a/test.txt b/test.txt
deleted file mode 100644
--- a/test.txt
+++ /dev/null
@@ -1,1 +0,0 @@
-test file content

D:\hgsource\SO-question>hg commit -m "merged from branch-one"

D:\hgsource\SO-question>hg diff -c tip
diff --git a/test.txt b/new-file.txt
rename from test.txt
rename to new-file.txt

Я нахожусь на версии 1.6.3 на Windows XP.

1 Ответ

1 голос
/ 11 октября 2010

ПРИМЕЧАНИЕ: diff может генерировать неожиданные результаты для слияний, так как по умолчанию будет сравниваться с первым родительским набором изменений рабочего каталога, если не указаны ревизии.

http://linux.die.net/man/1/hg

...