Сравнение и объединение файлов diff, diff3, sdiff, cmp, patch : Советы по распространению списков различий

Вперед Назад Содержание

11. Советы по распространению списков различий

Далее представлены некоторые моменты, которые следует иметь в виду, при распространении списков различий для обновления пакетов программ.

Убедитесь, что имена файлов были заданы правильно, или в заголовке списка различий или с помощью строки 'Index:'. Если обрабатываются файлы в подкаталоге, убедитесь, что пользователям сообщили об использовании опции '-p' или '--strip' в случае необходимости. Проследите, чтобы среди списков различий не было реверсивных, поскольку при этом бывает не понятно, применялся ли уже список различий.

Чтобы избежать неполного применения списка различий (до применения других списков, предшествующих ему), можно заставить первый список из файла списка различий обновлять файл с именем типа 'patchlevel.h' или 'version.c', содержащий уровень обработки или номер версии. Если входной файл содержит не тот номер версии, 'patch' немедленно об этом сообщит.

Более простой способ решения этой проблемы - помещать строку 'Prereq:' перед каждым списком различий. Если заголовок в списке различий содержит строку, начинающуюся с 'Prereq:', 'patch' рассмотрит следующее слово в этой строке (означающее номер версии) и проверит содержится ли оно во входном файл, предваряемое "пропуском" или символом новой строки. Если нет, 'patch' подтвердит это перед тем как продолжит. Это затруднит применение списков различий в неправильном порядке.

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

Для создания списка разлчий, меняющего старую версию пакета на новую, прежде всего создайте копию старой версии во временном каталоге. Обычно это достигается с помощью распаковки 'tar' или 'shar' архива старой версии.

Можно снизить размер списка различий путем переименования или переноса некоторых файлов перед созданием списка. Если старая версия пакета содержит какие-либо файлы, несодержащиеся в новой версии, или если какие-либо файлы были переименованы, создайте список из 'rm' и 'mv' команд для применения пользователем в каталоге со старой версией перед применением списка различий. После чего примените эти команды сами во временном каталоге.

Если есть файлы, которые не нужно включать в список различий, потому что они строятся из других файлов (например, 'TAGS' и результаты работы 'yacc' и 'makeinfo'), замените их версии во временном каталоге на новые, с помощью команд 'rm' и 'ln' или 'cp'.

Теперь можно создавать список различий. Контекстный формат, являющийся де-факто, стандартным форматом 'diff' для распространения списков различий, задается опцией '-C 2'. Не используйте меньше двух строк контекста, так как 'patch' обычно необходимо по крайней мере две строки для правильной работы. Используйте опцию '-P' в случае, если пакет новой версии содержит какие-либо файлы, несодержащиеся в старой. Убедитесь, что временный каталог задан первым, а новый каталог ­ вторым.

Добавьте в начале списка различий примечание, сообщающее пользователю все команды 'rm' и 'mv', которые необходимо запустить перед применением списка различий. После этого можно удалить временный каталог.


Вперед Назад Содержание