LINUX.ORG.RU

Умный diff


0

0

Существует ли аналог diff, который делает следующее:

1) выводит название функции, в которой нашёл различия;

2) выводит не только различные строчки, но и, если в строку внесены изменения, то и эти изменения;

3) не считает различием наличие/отсутствие пробелов/табов в начале строки;

4) игнорирует пустые (в том числе содержащие только пробелы и табы) строки?


1, 3 и 4 -- у GNU diff есть опции для такого поведения.

dilmah ★★★★★
()


IMHO обычный GNU diff подойдет, читай man.

Например:

-p --show-c-function
Show which C function each change is in.

а также опции про whitespaces.

HTH

Onanim
()
Ответ на: комментарий от Onanim

>--show-c-function

1) А если функции на другом языке, например, perl или python

2) Будут ли так же работать cvs diff и svn diff?

array
() автор топика
Ответ на: комментарий от array

>> --show-c-function

> 1) А если функции на другом языке, например, perl или python


Не знаю. Самому слабо проверить?

> 2) Будут ли так же работать cvs diff и svn diff?


Для cvs diff естественно работать будет. Для cvs не знаю.

HTH

Onanim
()

1. не знаю, для C есть в gnu diff 2. это можно посмотреть в xxdiff 3. опции в любом диффе 4. опции в любом диффе

А может кто знает заодно есть ли такой дифф в котором можно было бы вручную сказать: это строка соответствует этой, изволь перестроить что ты там насчитал?

gena2x ★★★
()

хаха, тоесть для C там встроенные фичи есть, о каком UNIX-way тогда может идти речь? Все больше я склонен думать что все это пионерские поделки.

anonymous
()
Ответ на: комментарий от anonymous

git diff имеет поддержку не только C но и других языков + можно
настроить руками описание того 'как найти текущую функцию'

http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
(см. Generating diff text)

вот списого того, что оно поддерживает из коробки:

http://git.kernel.org/?p=git/git.git;a=blob;f=userdiff.c;h=d95257ab3bd4fafa59b3
ed2aa58c480de274227d;hb=HEAD#l11

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.