2013-07-09 3 views
1

Вот два текстовых файла для сравнения:мерзавец дифф --word дифференциала дает неправильный результат

1.TXT:

one three four five 

2.txt:

one two three four 

Вот команды для создания diff (для Windows):

git init 
copy 1.txt temp 
git add temp 
copy 2.txt temp 
git diff --minimal --word-diff 
del temp 
xrmdir /s /q ".git" 

Здесь является выход:

diff --git a/temp b/temp 
index 555f964..d993b66 100644 
--- a/temp 
+++ b/temp 
@@ -1 +1 @@ 
one {+two+} three four[-five-] 

Если мы хотим, чтобы посмотреть оригинал 1.txt, посмотрев на дифф, мы видим

one three fourfive 

(двойное пространство от одного до трех, без пробела между четырьмя и пятью).

Есть ли способ (команда, я полагаю) исправить это, или это нормально? Я что-то упускаю?

PS: мерзавец --version == 1.8.3.mysysgit.0

ответ

3

Из ГИТ-дифф: страница руководства

равнина

Показать слова, как [-removed-] и {+ добавлена ​​+}. Не предпринимает попыток избежать разделителей, если они появляются на входе, поэтому выход может быть быть неоднозначным.

фарфора

Используйте специальный формат строки на основе, предназначенный для потребления сценария. Добавленные/удаленные/неизменные прогоны печатаются в обычном унифицированном формате diff , начиная с символа +/-/в начале строки и доходя до конца строки. Новые строки на входе: , представленный тильдой ~ на отдельной строке.

Результат, полученный вами, работает должным образом. Не предпринимает попыток избежать разделителей, если они появляются на входе, поэтому выход может быть неоднозначным.

Так что, когда я бегу git diff --minimal --word-diff=porcelain я получаю ответ:

diff --git a/home/me/temp b/home/me/temp 
index 29338da..4d0e08d 100644 
--- a/home/me/temp 
+++ b/home/me/temp 
@@ -1 +1 @@ 
one 
+two 
    three four 
-five 
~ 

который держит пробелы.