http://www.aros.orgAROS-ExecAROS-Exec ArchivesPower2People
kitty mascottop logo menu

Работа с Subversion (SVN)

Введение

На сервере хранится главный "репозиторий", представлющий собой основную базу публикуемых данных проекта. Каждый из разработчиков имеет свою "рабочую копию", то есть, локальную копию базы с изменниями с некоторого времени и изменениями, внесенными самим разработчиком, но ещё не переданными в базу на сервере. Если разработчик решает внести результат своей работы в "общий котёл", он вносит (commit) свои изменения на сервер с помощью клиентской программы SVN, которая берет на себя заботы по загрузке данных на сервер и объединению их с изменениями от других разработчиков.

Программное обеспечение

UNIX

Если вы работаете в Linux, FreeBSD или другой современной UNIX-системе, тогда достаточно просто установить официальное ПО для SVN, версии 1.0 или выше для вашей ОС. Все распространенные дистрибутивы Linux уже содержат его.

Также существует графический кроссплатформенный клиент для SVN под названием RapidSVN, который доступен под Unix (дистрибутивы GNU/Linux, FreeBSD, Sun Solaris и другими), Mac OS X и Windows.

Примечание

На сервере работает Subversion 1.1, могут быть использованы клиенты версий 1.0, 1.1 или 1.2.

SVN не поддерживает UTF-8 локализацию. Нужно переключить локаль на ISO8859 перед каждым действием с SVN.

AmigaOS

Работая в AmigaOS, вам понадобится установить TCP/IP стек и любой порт SVN. Как вариант, можно использовать порт для Amiga от Olaf Barthel, который можно найти на AmiNET (надо искать "subversion").

Windows

При работе в MS Windows (TM) можно рекомендовать SVN-клиент TortoiseSVN, который особенно понравится тем, кто привык работать с Проводником. Эта свободная программа с открытым исходным кодом, богатыми возможностями и хорошей поддержкой. Программа переведена на русский и содержит довольно подробную документацию (в том числе и на русском). Пожалуйста, отправляя ваши файлы, проверяйте, установлено ли в SVN свойство eol-style: native. Если нет, то все ваши файлы должны иметь концы строк в стандарте UNIX (только LF), если да - это не имеет значения. Концы строк UNIX также должны быть во всех ваших новых файлах. Примерами редакторов, умеющих указывать подобный EOL, являются следующие бесплатные программы: TigerPAD (сохранять как текст UNIX), DOS Navigator (в свойствах редактора проставить LF), утилиту(конвертор) dos2unix , NotePad++ (Кодировки - Преобразовать в UNIX-формат) и многие другие. Упомянутый выше RapidSVN тоже это умеет.

Mac OS X

При работе в Mac OS X вы можете использовать один из нескольких портированных версий SVN, например, порт SVN Мартина Отта. После его установки вы также можете установить графический интерфейс для SVN, например, svnX. svnX это наиболее современный SVN-клиент для Mac OS X, который к тому же, помимо прочего, поддерживает интерграцию с свободно распространяемым текстовым редактором TextWrangler (ранее назывался BBedit Lite). Помните что при использовании TextWrangler'а или другого текстового редактора для Mac'а, вам следует изменить кодировку символов в ваших доукментах с 'Macos roman' на 'ISO latin 1' (ISO8859) . Это можно сделать в настройках. В TextWrangler'е все остальные настройки по умолчанию правильные. Все вышеукзанные приложения свободно распространяются и доступны в виде запускаемых файлов (Universal Binary) для Mac'ов как на основе PowerPC, так и на основе Intel. Также доступен SVN-клиент RapidSVN.

Доступ к серверу

В отличие от CVS, не требуется вводить пароль для входа на сервер. Вместо этого SVN запросит ваш логин и пароль по мере надобности.

Примечание

Репозиторий AROS находится на защищенном паролем сервере SVN, что означает, что необходима регистрация для доступа к серверу для возможности участия в разработке. По требованию Amiga Inc., анонимный доступ только-на-чтение был отключен.

Получение исходников AROS

Чтобы получить рабочую копию кода и документации AROS необходимо использовать команду "checkout" (сверка), например:

> svn checkout https://svn.aros.org/svn/aros/trunk/AROS

Эта команда создаст директорию с именем AROS и наполнит её всеми исходниками системы, что может занять значительное время, если ваша сеть медленная. Раздел "contrib" содержит сторонние программы, портированные на AROS. Его нужно сверять, чтобы собрать любую разновидность AROS:

> cd AROS
> svn checkout https://svn.aros.org/svn/aros/trunk/contrib

Подсказка

После сверки (checkout), SVN запомнит источник кода.

Получение дополнительного исходного кода

Отдельно от основного кода AROS, который мы получили в предыдущем абзаце, на SVN сервере есть другое содержимое, не связанное прямо с кодом ОС. Например, раздел "binaries", содержащий изображения, например, скриншоты, бэкдропы и и т.п., и раздел "documentation", содержащий исходники для построения содержимого сайта.

Список имеющихся разделов можно получить с помощью следующей команды:

> svn ls https://svn.aros.org/svn/aros/trunk/

Обновление исходного кода

После сверки исходного кода естественным желанием будет периодическое их обновление для получения последних внесенных изменений. Для этого используется команда "update":

> cd AROS
> svn update

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

Предупреждение

Один лишь факт, что SVN успешно объединила изменения, внесенные остальными в ваш код, отнюдь не значит, что всё в порядке. Заботой SVN является текстовое содержание, и после слияния могут оставаться логические конфликты (например, если кто-то изменил семантику использования функции, которую вы применяете в своём коде). Следует всегда просматривать объединенные файлы и проверять, имеет ли смысл написанное в них.

Внесение изменений

Если вы считаете, что внесенные вами изменения достойны того, чтобы поделиться ими с остальными, следует использовать команду "commit":

> svn commit

Также можно задать список вносимых фалов, иначе SVN рекурсивно просматривает все подкаталоги текущего каталога, находит измененные вами файлы и вносит их. Перед посылкой файлов на сервер SVN запросит у вас комментарий для данной посылки. Обычно эти комментарии содержат краткое описание изменений, а иногда, и их объяснение. Хорошо написанные комментарии очень важны, поскольку они помогают остальным разработчикам видеть ваши изменения, и, возможно, понять, зачем они внесены. Комментарии накапливаются и затем посылаются ежедневным дайджестом в список рассылки разработчиков (и SVN Mailing List) с тем, чтобы все желающие были в курсе разработок, ведущихся в базе.

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

Добавление новых файлов и директорий

Для добавления новых файлов и директорий в репозиторий, используйте команду "add":

> svn add file.c
> svn add dir

SVN не станет автоматически заглядывать в новосозданные директории и добавлять их содержимое (в отличие, например, от TortoiseSVN), это следует сделать вручную. После добавления файла, следует использовать команду "commit" для их действительного добавления.

Примечание

Не добавляйте в репозиторий сгенерированные файлы (обычно это mmakefile, strings.h). Иначе эти файлы не будут обновляться при изменении исходного файла.

Установка свойств

Помимо прочего операционные системы различаются тем, какой код используется для обозначения конца строк. Для того чтобы удбедиться, что текстовый файл созданный или измененный не в Linux имеет правильные коды конца строк необходимо сделать следующее:

svn propset svn:eol-style native <source.c>

Также Subversion может вписывать определенные ключевые слова в исходные файлы. Для этого надо сделать следующее:

svn propset svn:keywords Author Date Id Revision <main.c>

Примечание

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

Импорт

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

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

  2. Смените текущую директорию на директорию с файлами для импорта:

    > cd name-1.2.3
    
  3. Импортируйте файлы командой "svn import":

    > svn import -m <комментарий> <путь назначения>
    

    При этом все файлы будут рекурсивно импортированы в репозиторий из текущей директории и ниже, по указанному пути и с заданным комментарием. На самом деле, будут добавлены не все файлы: SVN игнорирует имена файлов, характерные для резервных и скрытых файлов, такие как #?.bak, .#? и #?~.

    Несмотря на это, все файлы, которые не должны попасть в репозиторий, должны быть удалены перед импортом. Не пытайтесь остановить SVN в процессе импорта, если будет добавлен какой-то лишний файл. Лучше зделайте себе заметку, и удалите его сразу после окончания импорта.

    Например, если нужно импортировать исходники SVN 1.1.3 в директорию "contrib/development/versioning/svn":

    > cd subversion-1.1.3
    > svn import -m "Initial import of SVN 1.11.12"
    \ https://svn.aros.org/svn/aros/trunk/contrib/development/versioning/svn
    

Дополнительная документация

Более подробная информация про SVN, разумеется, может быть найдена в страницах руководства (manual pages) и прочей документации, прилагающихся к самой SVN. Также есть несколько сайтов, содержащих полезные учебники и руководства, которые могут оказаться более простыми для чтения. Очень рекомендуются следующие страницы:


Copyright © 1995-2017, The AROS Development Team. Все права защищены.
Amiga© является торговым знаком Amiga Inc. Все прочие торговые знаки принадлежат их собственникам.