2014-10-01 3 views
0

Как использовать слово в слово diff для текста на человеческом языке (на китайском языке)?git word diff на неэксплуатационный текст

У меня есть простой текст на китайском языке в репозитории git. Текст был отредактирован, и я хотел бы видеть, какие слова были добавлены/удалены. Одна строка в файле представляет собой целый абзац текста, поэтому простой git diff недостаточно: мы знаем, что что-то изменилось в определенном количестве абзацев, но мы не можем видеть, какие предложения/слова были изменены в нем.

Чтобы сделать материю хуже, как я уже сказал, текст на китайском языке. В отличие от английского и других индоевропейских языков, китайский язык не использует пробелы в качестве разделителя слов. Весь параграф вместе с китайскими знаками препинания делает единый блок без какого-либо пространства. Таким образом, git diff -word-diff не помогает вообще.

Есть ли способ иметь удобочитаемый diff между двумя версиями такого текста на китайском языке? Есть ли эквивалент -word-diff для каждого символа?

ответ

0

Я отправляю это как ответ на свой вопрос, однако он содержит только часть решения, указатель в правильном направлении. Что-то все еще отсутствует.

От How can I visualize per-character differences in a unified diff file? Попробуйте либо команду:

git diff --word-diff-regex=. 
git diff --color-words=. 

любой из двух команд выше пойми меня очень близко. Однако у меня есть 2 проблемы. Если я просто набираю команду выше и смотрю вывод в консоли, мне показывают только начало каждого абзаца. Вся строка не вписывается в консоль, а git обрезает конец (т. Е. Большая часть!).

Или если я пытаюсь перенаправить в файл:

git diff --color-words=. > diff.patch 

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

Update:
Я наконец использовал это решение:

wget https://git.kernel.org/cgit/git/git.git/plain/contrib/diff-highlight/diff-highlight --no-check-certificate 
chmod u+x diff-highlight 
git diff --color=always | ./diff-highlight | less -R 
0

Слово за словом diff должен работать как свой собственный ответ. От doc, соотношение между --word-diff-regex и --color-words выглядит следующим образом.

--color-words[=<regex> 
    Equivalent to --word-diff=color plus (if a regex was specified) --word-diff-regex=<regex>. 

На самом деле вы можете установить режим word-diff для porcelain, чтобы иметь лучшее представление о diff вывода в консоли.

git diff --word-diff-regex=. --word-diff=porcelain 

и перенаправить вывод в файл, вы не должны использовать --color-words (с невыполнением --word-diff как color), так как сгенерированный текстовый файл не может распознать информацию о цвете, закодированный каким-то образом с помощью git diff как скремблировавшего беспорядок вы получили , Вы можете просто использовать --word-diff-regex=., а по умолчанию --word-diff - plain.

git diff --word-diff-regex=. > diff.patch 
+0

Спасибо, но в последний раз я проверил, у меня была такая же проблема, как один первоначально упоминалось выше: как я имею дело с многобайтных символов, я получил искаженный код вместо читаемого текста. – augustin