Mercurial: лучше командной строки diff? - PullRequest
5 голосов
/ 22 марта 2011

Мне интересно, как улучшить команду diff как часть hg.Например, допустим, у меня есть этот код:

line 1 
line 2
lin3 3

, и я изменяю его на:

if($condition) {
   line 1
   line 2
   line 3
}

hg diff покажет исходные три строки с "-" иновые пять строк с "+".Даже когда я запускаю с -wbB, чтобы игнорировать пробелы и изменения строк.Я понимаю, что он пытается мне сказать, но разве это не может быть «умнее», и понимаю, что я добавил только две строки (и увеличил уровень на три строки)?

РЕДАКТИРОВАТЬ:можно ли hg diff сказать вам, какой текст был добавлен и где?В отличие от того, как «структура» кода изменилась из-за этих дополнений?

РЕДАКТИРОВАТЬ 2: Я использую Debian (Linux dev 2.6.26) с Mercurial 1.0.1

Спасибо

Ответы [ 2 ]

5 голосов
/ 22 марта 2011

Вы видите эти изменения, потому что количество пробелов изменяется.Если вы сделаете hg diff --ignore-space-change, вы увидите нечто более похожее на:

+ if($condition) {
   line 1
   line 2
   line 3
+ }

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

Также рассмотрите возможность обновления Mercurial.Вашей версии около трех лет, и текущие пакеты созданы для Debian.

0 голосов
/ 24 марта 2011

Мне было интересно что-то подобное, но в итоге я использовал DiffMerge (только для Windows, но вы можете попробовать Kdiff3 в Debian) в качестве визуального различия для просмотра таких изменений:

enter image description here

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

...