Управление версиями в Subversion Для Subversion 3 (в редакции 2345) Бен Коллинз-Сассман



бет9/34
Дата04.03.2016
өлшемі2.13 Mb.
#40691
түріРеферат
1   ...   5   6   7   8   9   10   11   12   ...   34

Подводя итоги


В этой главе мы рассмотрели ряд фундаментальных вещей о Subversion:

  • Мы ввели такие понятия, как центральное хранилище, рабочая копия и массив правок хранилища.

  • Мы рассмотрели на нескольких простых примерах, как при помощи Subversion два партнера могут публиковать и получать изменения, сделанные друг другом, используя модель «копирование-изменение-слияние».

  • Мы немного поговорили о том, как Subversion отслеживает и управляет информацией в рабочей копии.

На данный момент у вас должно быть хорошее представление о том, как вообще работает Subversion. Теперь, вооруженные этими знаниями, вы готовы перейти к следующей главе, которая представляет собой подробный обзор команд и возможностей Subversion.

Глава 3. Экскурсия по Subversion


Содержание

Читайте справку!

Импорт

Правки: Номера, Ключевые слова и Даты, Oh My!

Номера правок

Ключевые слова правок

Даты правок

Создание рабочей копии

Простейший рабочий цикл

Обновление рабочей копии

Внесение изменений в рабочую копию

Анализ изменений

svn status

svn diff

svn revert

Решение конфликтов (при объединении с чужими изменениями)

Объединение конфликтов вручную

Копирование файла поверх вашего рабочего файла

Использование svn revert

Фиксация изменений

Анализ истории

svn log

svn diff

Анализ локальных изменений

Сравнение рабочей копии с хранилищем

Сравнение хранилища с хранилищем

svn cat

svn list

Заключительное слово о истории

Другие полезные команды

svn cleanup

svn import

Подводя итоги

Теперь перейдем к более тесной работе с Subversion. К тому моменту, когда вы дойдёте до конца этой главы, вы сможете выполнить практически все задачи, возникающие при повседневном использовании Subversion. Вы начнете с первоначального создания рабочей копии вашего кода и пройдете через внесение изменений и проверку этих изменений. Вы познакомитесь с тем, как внедрить изменения, сделанные другими, в вашу рабочую копию и проверить их, а также сможете решить возможные конфликты.

Обратите внимание на то, что эта глава не ставит цели быть всеобъемлющим списком всех команд Subversion — скорее это описательное введение в наиболее вероятные задачи, с которыми вы можете столкнуться. Эта глава предполагает, что вы прочитали и поняли Глава 2, Основные понятия и хорошо разобрались с общей моделью Subversion. За подробным описанием всех команд обратитесь в Глава 9, Полное справочное руководство по Subversion.

Читайте справку!


Перед тем как продолжить, запомните самую главную из всех команд Subversion: svn help. Клиент для командной строки Subversion является самодокуметируемым — в любой момент команда svn help покажет описание синтаксиса, параметров и поведения подкоманды subcommand.

Импорт


Для импортирования нового проекта в Subversion-хранилище используется svn import. В то время как, вероятно, это первое, что вы делаете при настройке Subversion-сервера, выполняется это не так часто. Подробное описание этой команды см. «svn import» далее в этой главе.

Правки: Номера, Ключевые слова и Даты, Oh My!


Перед тем как продолжить, вам нужно немного узнать о том, как идентифицировать отдельную правку в хранилище. Как вы узнали в «Правки» правка представляет собой «снимок» хранилища в конкретный момент времени. По мере продолжения фиксаций и увеличения хранилища вам потребуется механизм для идентифицированния этих снимков.

Для указания этих правок используется ключ --revision (-r) плюс нужная правка; также можно указать диапазон правок, разделяя начало и конец диапазона двоеточием: (svn --revision REV1:REV2). Subversion позволяет обращаться к правкам по номеру, ключевому слову или дате.


Номера правок


Когда вы создаете новое хранилище Subversion, оно получает номер правки "ноль", каждая последующая фиксация увеличивает этот номер на единицу. Каждый раз по завершении фиксации клиент Subversion сообщает вам новый номер правки:

$ svn commit --message "Corrected number of cheese slices."

Sending sandwich.txt

Transmitting file data .

Committed revision 3.

В будущем, в любой момент времени, если вам нужно будет сослаться на эту правку (как и почему может возникнуть такая необходимость, будет видно дальше по тексту) вы можете сослаться на нее как на «3».


Ключевые слова правок


Subversion клиент понимает определенное количество ключевых слов правок. Эти ключевые слова могут быть использованы в место цифровых аргументов в параметре --revision и будут преобразованы Subversion в конкретные номера правок:

Замечание


В каждом каталоге рабочей копии есть служебный подкаталог .svn. Для каждого файла в каталоге Subversion сохраняет копию этого файла в служебной папке. Эта копия является немодифицированной (без раскрытия ключевых слов, без преобразования концовок строк, без чего-либо другого) копией файла какой он есть в последней правке (называемой «BASE») до которой вы обновили его в вашей рабочей копии. Мы обращаемся к этому файлу, как к первоисточнику или базовой версии вашего файла; он всегда является точной побайтовой копией файла, находящегося в хранилище.

HEAD


Последняя (или «самая новая») правка хранилища

BASE


Номер правки элемента рабочей копии. Если элемент редактировался, то «BASE версия» соответствует тому, как элемент выглядел до редактирования.

COMMITTED

Правка, в которой элемент последний раз редактировался (предшествующая либо равная BASE).

PREV


Правка, предшествующая последней правке, в которой элемент был изменен. (Технически, COMMITTED - 1.)

Замечание


PREV, BASE и COMMITTED могут использоваться при обращении по локальным путям, но не по URL.

Ниже приведено несколько примеров использования ключевых слов правок. Не волнуйтесь, если смысл команд пока не понятен; в дальнейшем мы объясним эти команды:

$ svn diff --revision PREV:COMMITTED foo.c
# показать последнее изменение зафиксированное для foo.c
$ svn log --revision HEAD
# показать лог для последней фиксации хранилища
$ svn diff --revision HEAD
# сравнить ваш рабочый файл (с учетом локальных изменений)

# с последней правкой в хранилище


$ svn diff --revision BASE:HEAD foo.c
# сравнить ваш «исходный» foo.c (без учета локальных

# изменений) с последней версией в хранилище


$ svn log --revision BASE:HEAD
# показать все логи фиксаций со времени вашего последнего обновления
$ svn update --revision PREV foo.c
# отменить последние изменения в foo.c

# (рабочая правка foo.c понижается)

Эти ключевые слова позволят вам выполнять многие часто используемые (и полезные) операции без необходимости обращаться к конкретным номерам правок или точно помнить номер правке своей рабочей копии.

Даты правок


Везде, где вы указываете номер правки или ключевое слово, вы так же можете использовать и дату, указав ее в фигурных скобках «{}». Вы даже можете получить доступ к диапазону изменений в хранилище, указывая даты и номера правок одновременно!

Вот примеры форматов, используемых для указания даты, которые принимает Subversion. Не забывайте использовать кавычки при написании даты, содержащей пробелы.

$ svn checkout --revision {2002-02-17}

$ svn checkout --revision {15:30}

$ svn checkout --revision {15:30:00.200000}

$ svn checkout --revision {"2002-02-17 15:30"}

$ svn checkout --revision {"2002-02-17 15:30 +0230"}

$ svn checkout --revision {2002-02-17T15:30}

$ svn checkout --revision {2002-02-17T15:30Z}

$ svn checkout --revision {2002-02-17T15:30-04:00}

$ svn checkout --revision {20020217T1530}

$ svn checkout --revision {20020217T1530Z}

$ svn checkout --revision {20020217T1530-0500}

Когда вы указываете в качестве правки дату, Subversion найдет правку наиболее соответствующую запрошенной дате:



$ svn log --revision {2002-11-28}

------------------------------------------------------------------------

r12 | ira | 2002-11-27 12:31:51 -0600 (Wed, 27 Nov 2002) | 6 lines



Is Subversion a Day Early?

Указав при обращении к правке только дату, без указания времени (например, 2002-11-27), возможно вы подумаете, что Subversion выдаст вам последнюю правку за 27 ноября. А вместо этого можете получить правку за 26 число или даже более раннюю. Помните, что Subversion будет искать наиболее отвечающую указанной вами дате правку хранилища. Если вы укажите дату без указания времени, например 2002-11-27, Subversion примет за временную метку 00:00:00 и таким образом поиск ближайшей к 27 числу ревизии не даст ничего относящегося к 27 ноября.

Если вам необходимо найти именно 27 число, вы можете либо указать 27 число с временной меткой ({"2002-11-27 23:59"}) либо просто использовать в запросе следующий день ({2002-11-28}).

Кроме того, вы можете использовать диапазоны дат. Subversion найдет все правки между обеими датами включительно:

$ svn log --revision {2002-11-20}:{2002-11-29}

Как мы уже говорили, вы можете использовать даты и номера правок одновременно:



$ svn log --revision {2002-11-20}:4040

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




Достарыңызбен бөлісу:
1   ...   5   6   7   8   9   10   11   12   ...   34




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет