Уже много от кого и много чего я слышал о системе управления верcиями Subversion. И решил я её себе установить для локального и монопольного использования, в частности для хранения спек-файлов к моим пакетам. Ниже я расскажу как просто всё это оказалось.
Рассказывать о том, что такое Subversion я не буду, полного описания всех возможностей этой замечательно системы вы здесь также не найдёте :) Эта заметка имеет своей целью дать вам несколько инструкций и приёмов, после выполнения и запоминания которых вы сможете использовать Subversion тут же. А остальные знания будете приобретать в ходе работы с ней. Настоятельно советую ознакомиться с SVN Book, ссылка на которую приводится в последнем разделе.
Для использования Subversion вам потребуется установить несколько пакетов, а именно: subversion, subversion-server-common и libsubversion (последний должен вытягиваться по зависимостям).
Для расположения хранилища я выбрал каталог /mnt/other/svn. Создаем хранилище:
В выводе выше мы видим, что в данном каталоге Subversion расположил свои служебные файлы. Хранилище было успешно создано, но пока оно пустует, так как мы не добавили в него никаких файлов.
Прежде чем осуществить операцию импортирования в хранилище следует расположить выбранные для импорта файлы в отельном каталоге. Я использовал ~/svn для этих нужд. В нём нужно создать не очень сложную структуру — добавить три каталога: branches, tags и trunk. После этого я скопировал все спеки в ~/svn/trunk У меня всё это стало выглядеть так:
Ну что ж, осталось лишь добавить их в хранилище:
Третьим и четвёртым аргументами svn являются каталоги — первый это каталог исходный и второй это пункт назначение, как он будет располагаться в хранилище. Я, как видите, выбрал для него название SPECS. Опция -m обязательна, она задает комментарий к внесенным изменениям. Позже, при внесении изменений в хранилище, вы тоже будете её указывать.
Ну вот, теперь все спеки находятся в хранилище, убедиться в этом можно выполнив
Каталог, в котором у вас хранились спеки до импорта нам больше не нужен и потом его можно смело удалять.
Перед использованием вам нужно завести себе рабочую копию, т.е. получить из хранилища нужные файлы, чтобы с ними можно было работать.
Данная команда получит все файлы из хранилища и поместит их в каталог SPECS, который предварительно создаст в текущем каталоге. Символ A перед именем файлов происходит, как вы уже догадались, от английского Added и указывает, что файлы были добавлены. Каталог SPECS называют рабочей копией, именно с ним вы и будете работать основное время. Теперь можно смело редактировать файлы в нём, внося необходимые изменения, причем редактировать любыми привычными вам средствами и редакторами от vim до KWrite :)
После внесения изменений, перед закреплением результатов и добавлением их в хранилище у вас есть возможность посмотреть что вы изменили. Краткий формат, с отображением только имён файлов можно увидеть введя
Полные изменения доступны по svn diff:
Формат вывода svn diff аналогичен выводу уже знакомой нам программы diff. По умолчанию svn diff отобразит изменения во всех файлах, при желании же можно указать и конкретный файл, чтобы увидеть изменения в нём.
Убедившись, что вы исправили именно то, что хотели, можно зафиксировать эти изменения в хранилище. Выполните svn commit -m 'Comment'.
Думаю, что тут у вас не возникло трудностей. В довершение следует обновить вашу рабочую копию командой svn update.
Для начала этих нескольких часто используемых команд будет достаточно, но я вам настоятельно рекомендую ознакомиться с замечательной SVN Book, ссылка на частичный перевод которой приведена ниже. Книга затрагивает все аспекты использования Subversion, написана разработчиками и очень легко читается.