next up previous contents
Next: 14.26 export - экспорт Up: 14. CVS - система Previous: 14.24 checkout - получение

Подраздел


14.25 diff - показать отличия между версиями

Команда diff используется, чтобы увидеть отличия в различных версиях одного файла. По умолчанию сравниваются файл в рабочем каталоге с версиями этого файла в хранилище и показываются все отличия. Если дано имя файла, то сравнивается файл с этим именем, а если дано имя каталога, то сравниваются все файлы каталога. Выработка кода завершения для команды diff отличается от других команд системы CVS. Эта команда возвращает значение 0 (нуль), если нет никаких различий между файлами, и ненулевое значение, если встретились различия или ошибки.

14.25.1 Параметры команды diff

Команда diff поддерживает следующий стандартный набор параметров.
-D date
Использовать наиболее свежую версию до даты date. Смотрите параметр -r, чтобы яснее понять влияние на сравнение.

-k kflag
Обрабатывать ключевые слова в соответствии со значением kflag.

-l
Выполнять только в текущем каталоге (без подкаталогов).

-R
Обрабатывать файлы рекурсивно, т.е. текущий каталог вместе с подкаталогами. Это значение параметра принимается по умолчанию.

-r tag
Сравнить с версией tag. Могут присутствовать: один параметр -r, два параметра -r или ни одного. Если не указан параметр -r, то будет производиться сравнение рабочего файла с той версией в хранилище, на которой базируется файл в рабочем каталоге. Если присутствует два параметра -r, то будут сравниваться две версии в хранилище (содержание рабочей копии файла в рабочем каталоге не будет иметь влияние).

Один параметр -r или оба могут быть заменены параметрами -D, если это требуется.

Следующие параметры определяют формат вывода. Они имеют то же значение, что и в утилите GNU diff. В связи с этим, мы только перечислим их.

-0 -1 -2 -3 -4 -5 -6 -7 -8 -9
-binary
-brief
-changed-group-format=ARG
-c
[-C NLINES] [-e -ed]
-t -expand-tabs
-f -forward-ed
-horizon-lines=ARG
-ifdef=ARG
-w -ignore-all-space
-B -ignore-blank-lines
-i -ignore-case
-I REGEXP
[-ignore-matching-lines=REGEXP]
-h
-b -ignore-space-change
-T -initial-tab
-L LABEL -label=LABEL
-left-column
-d -minimal
-N -new-file
-new-line-format=ARG
-old-line-format=ARG
-paginate
-n -rcs
-s -report-identical-files
-p
-show-c-function
-y -side-by-side
-F REGEXP -show-function-line=REGEXP
-H -speed-large-files
-suppress-common-lines
-a -text
-unchanged-group-format=ARG
-u
[-U NLINES] [-unified[=LINES]
-V ARG
-W COLUMNS
[-width=COLUMNS]

14.25.2 Примеры использования команды diff

Следующая строка производит сравнение между версиями 1.1 и 1.2 файла CVS_DIFF.TEX Параметр -u означает Unidiff. Параметр -kk означает, что никакие подстановки ключевых слов не производятся, так что не будет никакой разницы между файлами, которая порождена лишь различной подстановкой ключевых слов.
cvs diff -kk -u -r 1.1 -r 1.2 CVS_Diff.tex

Предположим, что экспериментальная ветвь EXPR1 базируется на наборе файлов, которые описываются тегом с именем RELEASE_1_0. Чтобы увидеть, что происходит с этой ветвью, можно воспользоваться командой
cvs diff -r RELEASE_1_0 -r EXPR1
Здесь будут сравниваться файлы из ветви EXPR1 и комплект файлов с тегом RELEASE_1_0.

Подобная команда может использоваться, чтобы получить изменения в версиях
cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs

Если вы вед©те журнал изменений, то нижеследующая команда позволит вам перед выполнением команды commit подготовить записи в ваш журнал. Будут напечатаны все изменения, которые вы ещ© не подтвердили в хранилище.
cvs diff -u | less


next up previous contents
Next: 14.26 export - экспорт Up: 14. CVS - система Previous: 14.24 checkout - получение
Andrei Chevel
Andrei.Chevel@pnpi.spb.ru