diff
Сравнение двух бинарных файлов
$ diff -u <(od -A x -t x1 ref.bmp) <(od -A x -t x1 orig.bmp)Использование git для создания патчей
В старые добрые времена для создания патча для модуля нужно было иметь под рукой оригинальный нетронутый файл и файл с вашими изменениями. Затем использовать diff для сравнения двух файлов.
Для такой часто встречающейся практической задачи можно использовать git:
- Загрузить модуль и распаковать
- Инициализировать git репозиторий git init
- Добавить файлы git add .
- Сделать первый коммит, например git commit -m 'Версия 1.23 с CPAN'
- Править, коммитить, править...
- Сгенерировать патч git format-patch --stdout -1
Ссылка:
http://use.perl.org/~brian_d_foy/journal/37664
Автоматический показ diff в vim при коммите в svn
Перед комитом изменений проекта обычно просматривают diff, что же конкретно изменилось. Потом пишут комментарии к изменениям.
Этот процесс тоже, как ни странно Ж;-), можно немного автоматизировать.
Можно сделать так что при коммите, когда вызовется vim для написания комментария к комиту, в отдельном окне в vim автоматически откроется так же diff проекта.
Достаточно прописать в rc файл нашего любимого шела следующее
export SVN_EDITOR='vim -c "new|silent r! svn diff"\ -c "set syntax=diff buftype=nofile" -c "silent 1|wincmd j"'
теперь при
$ svn commitполучаем вышеописанное поведение..
Просмотр изменений из svn в vim
В svn можно вызвать внешнюю программу просмотра изменений. А в vim имеется для этого специальный режим. Если сложить эти два обстоятельства вместе, можно очень удобно просматривать изменения в vim из svn Ж:-)
1. Создаем ~/bin/vimdiff-svn, даем ему права на исполнение и убеждаемся что ~/bin находится в нашем $PATH
#!/bin/sh while [ $# -gt 2 ]; do shift; done vim -d $@
2. Запускаем
$ svn diff --diff-cmd vimdiff-svnи наслаждаемся результатом Ж:-) Что бы просмотреть следующий файл - выходим из vim (удобно по :qa или :qa!)
Пример использования основанный на этом .
$ svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/kdecore/ $ cd kdecore $ svn diff -r 181258:183456 kglobalaccel_x11.cpp --diff-cmd vimdiff-svn
Просмотр diff из потока в цвете
Часто приходится смотреть diff не из файла, а из потока, например сформированный командой cvs diff или svn diff.
Удобно в таком случае просматривать в цвете в vim, не записывая в файл, а прямо в потоке.
наример:
$ svn co svn://anonsvn.kde.org/home/kde/branches/KDE/3.5/kdelibs/kdecore/ $ cd kdecore $ svn diff -r 181258:183456 kglobalaccel_x11.cpp | vim -
diff покажется красиво раскрашенным Ж:-)
PS
Цветной gcc, make, и diff
раз уж пошел разговор о цветах, то установив цветные фантики, можно также установить цветной gcc, make, и diff.
устанавливается пакетами:
colorgcc, colormake, colordiff
вызывается тоже с аналогичными именами. Мануалы пакетов содержат информацию о том, как перенастроить систему на использование данных оберток по умолчанию.
Как сравнить 2 каталога
$ diff -qr dir1 dir2

