next up previous contents
Next: 14.31 commit - команда Up: 14. CVS - система Previous: 14.29 log - выдать

Подраздел


14.30 rdiff - различия между версиями в формате patch

Команда rdiff строит входной файл для программы patch, которую разработал Larry Wall, чтобы преобразовать старую версию исходного текста в последнюю версию. Команда rdiff является одной из нескольких команд CVS, которые работают прямо с хранилищем, не требуя выполнения перед ними команды checkout. Вывод команды rdiff направляется на стандартное устройство вывода.

Используя стандартные параметры -r и -D, вы можете определить любую комбинацию одной или двух версий или дат модификации. Если указана лишь одна версия или дата, то результирующий файл будет отражать различия между указанной версией и текущей главной версией в файле RCS.

Заметим, что если выбранная программная версия содержится более, чем в одном каталоге, тогда может оказаться необходимым определить параметр -p для программы patch, когда будет происходить обновление старых версий. Таким образом, patch сможет найти файлы, которые находятся в других каталогах.

14.30.1 Параметры rdiff

Нижеследующие стандартные параметры поддерживаются командой rdiff.

-D date
Использовать наиболее свежую версию, но не позже даты date.

-f
Если не найдено соответствующей версии, то взять последнюю версию, вместо игнорирования файла.

-l
Локально; не обрабатывать подкаталоги, работать только в локальном каталоге.

-R
Обрабатывать все подкаталоги.

-r tag
Использовать версию tag.

В дополнение к вышепривед©нным, имеется несколько дополнительных команд.

-c
использовать контекстный формат diff. Это есть умолчание.

-s
Создать сводный отч©т об изменениях вместо файла для программы patch. Сводный отч©т включает информацию о файлах, которые были изменены или добавлены в промежутке между двумя версиями. Отч©т посылается на стандартное устройство вывода. Этот параметр удобен, чтобы определить, какие файлы менялись в промежутке между двумя датами.

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

-u
Использовать формат undiff для контекстного построения различий. Этот параметр недоступен для вашей программы diff, если она не поддерживает формат unidiff. Помните, что старые версии программы patch не понимают формат unidiff.

14.30.2 Примеры использования rdiff

Предположим, что вас спросили о последних изменениях файла CVS_Struct.tex в модуле BOOK. Проще всего ответить так:
cvs rdiff -t BOOK/CVS_Struct.tex
В ответ вы получите что-то вроде нижеследующего:

*** BOOK/CVS_Struct.tex:1.10    Thu Apr  1 16:24:04 1999
--- BOOK/CVS_Struct.tex Fri Apr  2 19:00:58 1999
***************
*** 69,74 ****
--- 69,75 ----
  \input{CVS_Export.tex} % Export
\input{CVS_History.tex} % History
\input{CVS_import.tex} % Import
+ \input{CVS_Log.tex} % Log
\input{CVS_commit.tex} % Commit
\input{CVS_Update.tex} % Update
\input{CVS_Rtag.tex} % Rtag
Здесь знаком + (плюс) помечена строка, где произошли изменения последний раз. Видно также, что последний раз файл BOOK/CVS_Struct.tex изменялся 2-ого апреля 1999, а предыдущее изменение имело место 1-ого апреля 1999.

Предположим, вы образовали версию 1.3 и создали ветвь с именем R13fix для коррекции возможных ошибок. При этом ветвь R131 соответствует версии 1.3.1, которую вы сделали некоторое время назад. Теперь, вы хотите увидеть, сколько было сделано работы по изменениям исходных текстов. Это можно выполнить с помощью команды:
cvs rdiff -s -r R131 -r R13fix module-name


next up previous contents
Next: 14.31 commit - команда Up: 14. CVS - система Previous: 14.29 log - выдать
Andrei Chevel
Andrei.Chevel@pnpi.spb.ru