пятница, 30 апреля 2010 г.

Работа с локальным SVN-репозитарием

Mac OS предоставляет возможность сохранять версии своих исходников и вообще любых проектов - в системе уже установлен готовый SVN-клиент.

Кроме того, SVN-клиент также имеется в Xcode, но лично я предпочитаю работать через Терминал (командную строку).

1. Сначала нужно создать локальный SVN-репозитарий

Допустим, вы хотите создать репозитарий в виде папки SVN_R, которая будет расположена в папке /Volumes/Data/MyRepositories/ (то есть в папке MyRepositories, которая будет лежать в корне диска Data).

Для этого войдите в папку
MyRepositories (через Терминал):

cd /Volumes/Data/
MyRepositories

После этого создайте репозитарий такой командой (папку SVN_R не создавайте)

svnadmin create SVN_R

Теперь у вас создана папка, содержащая в себе SVN-репозитарий пока без каких-либо сохранённых там проектов.

Кроме того, вы можете создавать внутри репозитария папки под разные проекты с помощью команды (например, для создания папки
Project1Repository)

svn mkdir file:///Volumes/Data/SVN_R/Project1Repository

2. Теперь нужно импортировать имеющийся проект в созданный репозитарий

Теперь вы можете импортировать в этот созданный репозитарий тот проект (папку
MyProject1, содержащую проект) с помощью команды (если хотите импортировать именно в корень репозитария, далее мы будем считать, что так и сделали)

svn import /AllProjects/MyProject1 file:///Volumes/Data/SVN_R
-m 'Импортировал свой проект 1'

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

svn checkout file:///Volumes/Data/SVN_R ~/MyVersionedProjects

Символ ~ (тильда) означает вашу домашнюю папку (обычно имеющее название совпадающее с именем пользователя в Mac OS или Unix/Linux). То есть из репозитария будет выкачан проект именно в папку MyVersionedProjects, но после этого действия проект будет виден как папка
MyProject1 внутри папки MyVersionedProjects (очень важно, чтобы вы не создавали сами папку MyProject1 заранее в папке MyVersionedProjects, иначе в ней появятся одни лишь служебные файлы, а не сам проект). Кроме проекта вы увидите некоторые служебные файлы и папки, в названиях которых может содержаться точка и слово svn. Ни в коем случае не удаляйте их, они нужны для обеспечения версионного контроля.

Теперь работайте с проектом только в этой рабочей папке (куда только что выкачали проект из репозитария).

4. Сохранение очередных версий (commit)

Когда вы захотите сохранить очередную версию вашего проекта, то зайдите в Терминале в РАБОЧУЮ папку проекта и закоммитьте проект

cd
~/MyVersionedProjects
svn commit -m 'Очередная версия (исправил косяк с загрузкой файлов, остался ещё косяк в GUI)'

5. Как посмотреть комментарии к прежним версиям

Для этого с помощью команды cd зайдите в терминале в рабочую папку проекта и выполните команду (для случая, если вы хотите посмотреть комментарии от 1 до 3 версии)

svn log -r 1:3

Вот что вы примерно увидите после выполнения этой команды:
------------------------------------------------------------------------
r1 | Murat | 2010-04-28 13:58:34 +0700 (ср, 28 апр 2010) | 1 line

Create temporary repositary until purchase Teamprise Explorer
------------------------------------------------------------------------
r2 | Murat | 2010-04-28 21:00:03 +0700 (ср, 28 апр 2010) | 1 line

Добавил ОПИСАНИЕ.txt - буду описывать, что я понял из исходников (которые не мои)
------------------------------------------------------------------------
r3 | Murat | 2010-04-29 13:18:54 +0700 (чт, 29 апр 2010) | 1 line

Добавил скрипты для автоматизации сборки, копирования заголовков, очистки проектов
------------------------------------------------------------------------

Таким образом, можно принять решение о том, к какой именно версии вы хотите откатиться.


6. Как откатиться к одной из предыдущих версий

Наиболее удобно восстанавливать одну из предыдущих версий не в рабочую, а в отдельную папку (но это лишь мой опыт, так что решайте сами на этот счёт).

Создайте отдельную папку (например на рабочем столе папку OLD_VERSION_2). Выполните такую команду, если хотите откатиться ко 2-й версии:

svn checkout
file:///Volumes/Data/SVN_R ~/Desktop/OLD_VERSION_2 -r 2

После выполнения этой команды кроме списка из всех восстановленных файлов внизу вы увидите сообщение
Checked out revision 2.

Теперь в папке OLD_VERSION_2 находится вся 2-я версия, полученная из репозитария.

7. Сравнение версий файлов

SVN предоставляет возможность просмотра в Терминале (в командной строке) различий между версиями файлов (для этого введите команду svn help и поищите в интернете справку), но я предпочитаю для этого использовать бесплатную программу kdiff3 (домашняя страница этой программы -
http://kdiff3.sourceforge.net/). Эта программа позволяет увидеть различия в текстовых исходниках просто из разных папок (выделяя различия в тексте цветом).

Но SVN позволяет увидеть различия между указанными версиями указанных файлов.
Для того, чтобы увидеть чем отличается 3-я версия
файла ОПИСАНИЕ.txt от 2-й версии в текущей папке, введите команду

svn diff -r 2:3 ОПИСАНИЕ.txt

8. Получение справки не отходя от кассы

Общая справка
svn help

Справка по выбранной команде (например, по команде diff)
svn help diff

Комментариев нет:

Отправить комментарий

Постоянные читатели

Архив блога