AROS/Репозиторий
На сервере хранится главный «склад», представлющий собой основную базу публикуемых данных проекта. Каждый из разработчиков имеет свою рабочую копию — то есть, локальную копию базы с изменниями с некоторого времени и изменениями, внесенными самим разработчиком, но ещё не переданными серверу. Разработчик вносит результат своей работы в «общий котёл» клиентской программой SVN, которая обеспечивает загрузку данных на сервер и объединение их с версиями от других разработчиков.
Программное обеспечение
правитьЕсли вы работаете в Linux, FreeBSD или другой современной UNIX-системе, тогда достаточно просто установить официальное ПО для SVN, версии 1.0 или выше, для вашей ОС. Большинство дистрибутивов Linux уже содержат его.
Примечание: На сервере работает Subversion 1.1, могут быть использованы клиенты версий 1.0, 1.1 или 1.2. |
SVN не поддерживает локализацию UTF-8. Нужно переключить локаль на ISO8859 перед каждым действием с SVN.
Работая в AmigaOS, вам понадобится установить TCP/IP-стек и любой порт SVN. Как вариант, можно использовать порт для Amiga от Olaf Barthel, который можно найти на aminet (надо искать «subversion»).
При работе в Microsoft Windows™ можно рекомендовать SVN-клиент TortoiseSVN, который особенно понравится тем, кто привык работать с Проводником. Программа переведена на русский и содержит довольно подробную документацию (пока не русскую). Команды TortoiseSVN в целом, соответствуют своим аналогам в оригинальной SVN. Отправляя ваши файлы, проверьте, установлено ли свойство eol-style: native, если нет — все ваши файлы должны иметь концы строк в стандарте UNIX (только LF), если да — это не имеет значения. Концы строк UNIX также должны быть во всех ваших новых файлах. Чтобы их получить, можно рекомендовать следующие бесплатные программы: редактор TigerPAD (сохранять как текст UNIX), DOS Navigator (в свойствах редактора проставить LF), утилиту dos2unix (конвертор).
В отличие от CVS, не требуется логиниться на сервер. Вместо этого, SVN запросит ваш логин и пароль по мере надобности.
Репозиторий AROS находится на защищенном паролем сервере SVN, что означает, что необходима регистрация для доступа к серверу для возможности участия в разработке. По требованию Amiga Inc., анонимный доступ только-на-чтение был отключен. |
Получение исходников AROS
правитьЧтобы получить рабочую копию кода и документации AROS необходимо использовать команду «checkout» (сверка), например:
> svn checkout https://svn.aros.org:8080/svn/aros/trunk/AROS
Эта команда создаст директорию с именем AROS и наполнит её всеми исходниками системы, что может занять значительное время, если ваша сеть медленная. Раздел «contrib» содержит сторонние программы, портированные на AROS. Его нужно сверять, чтобы собирать все виды AROS:
> cd AROS > svn checkout https://svn.aros.org:8080/svn/aros/trunk/contrib
После сверки (checkout), SVN запомнит источник кода. |
Получение дополнительного исходного кода
правитьОтдельно от основных исходников AROS, которые мы сверяле в предыдущем абзаце, на SVN сервере есть другое содержимое, не связанное прямо с кодом ОС. Например, раздел «binaries», содержащий изображения, например, скриншоты, бэкдропы и и т. п., и раздел «documentation», содержащий исходники для построения содержимого сайта.
Список имеющихся разделов можно получить с помощью следующей команды:
> svn ls https://svn.aros.org:8080/svn/aros/trunk/
Обновление исходников
После сверки исходников, естественным желанием будет периодическое их обновление для получения последних внесенных изменений. Для этого используется команда «update»:
> cd AROS > svn update
При этом в вашу копию будут внесены изменения, внесенные другими разработчиками и сверены новые, добавленные директории и файлы. Если кто-то внес изменения в файл, который вы редактируете локально, SVN попытается автоматически совместить файлы. Если были изменены одни и те же строки, SVN скорее всего, не сможет закончить совмещение кода. Если такое случается, SVN выдаст сообщение о конфликте и сохранит обе версии файла разделенные <<<< You need to edit the file and resolve the conflict manually (Придётся редактировать файл и разрешать конфликт вручную).
Внимание! Предупреждение: Один лишь факт, что SVN успешно объединила изменения, внесенные остальными в ваш код, не значит, что всё в порядке. Заботой SVN является текстовое содержание, и после слияния могут оставаться логические конфликты (например, если кто-то изменил семантику использования функции, которую вы применяете в своём коде). Следует всегда просматривать объединенные файлы и проверять, имеет ли смысл написанное в них. |
Внесение изменений
правитьЕсли вы считаете, что внесенные вами изменения достойны того, чтобы поделиться ими с остальными, следует использовать команду «commit»:
> svn commit
Также можно задать список вносимых файлов, иначе SVN рекурсивно просматривает все подкаталоги текущего каталога, находит измененные вами файлы и вносит их. Перед посылкой файлов на сервер SVN запросит у вас комментарий для данной посылки. Обычно эти комментарии содержат краткое описание изменений, а иногда, и их объяснение. Хорошо написанные комментарии очень важны, поскольку они помогают остальным разработчикам видеть ваши изменения, и, возможно, понимать, зачем они внесены. Комментарии накапливаются и затем посылаются ежедневным дайджестом в список рассылки разработчиков (и SVN ml) с тем, чтобы все желающие были в курсе разработок, ведущихся в базе.
Перед внесением ваших изменений в базу, следует сперва сделать обновление вашей локальной копии, чтобы проверить, изменялись ли те файлы, над которыми вы работали. Если файлы были изменены, перед внесением изменений следует разрешить все конфликты. Также, убедитесь, что вы проверили ваши изменения перед внесением, по крайней мере, на предмет того, не нарушат ли они сборку системы.
Добавление новых файлов и директорий
правитьДля добавления новых файлов и директорий в репозиторий, используйте команду «add»:
> svn add file.c > svn add dir
SVN не станет автоматически заглядывать в новосозданные директории и добавлять их содержимое (в отличие, например, от TortoiseSVN), это следует сделать вручную. После добавления файла, следует использовать команду «commit» для их действительного добавления.
Импорт файлов в репозиторий
правитьЕсли необходимо добавить большое количество файлов, такие, как исходный код уже имеющейся программы, команды «svn add» быстро становятся утомляющими. В таких случаях следует использовать команду «svn import». К сожалению, раздел руководства по SVN, посвященный этой команде, написан из рук вон плохо, так что следует привести некоторые примеры:
- Добавьте файлы и директории, подлежащие импорту в любое удобное место, но только не в пределах вашей рабочей копии. Запуск команды «import» для директории, расположенной в пределах рабочей копии, может привести к весьма странным результатам, поэтому, этого лучше избегать.
- Смените текущую директорию на директорию с файлами для импорта:
> cd name-1.2.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:8080/svn/aros/trunk/contrib/development/versioning/svn
Дополнительная документация
правитьБолее подробная информация про SVN разумеется, может быть найдена в страницах руководства (manual pages) и прочей документации, прилагающихся к самой SVN, а также есть несколько сайтов, содержащих полезные учебники и руководства, которые могут оказать проще для чтения. Очень рекомендуются следующие страницы: