Содержание
Каким бы протоколом вы ни пользовались для доступа к своим хранилищам, вам в любом случае потребуется создать хотя бы одно хранилище. Это может быть сделано как при помощи клиента Subversion для командной строки, так и при помощи TortoiseSVN.
Если вы ещё не создали хранилище Subversion, самое время этим заняться.
Вы можете создать хранилище или в формате FSFS, или в более старом формате Berkeley Database (BDB). Формат FSFS обычно быстрее и более лёгок в администрировании, также он сейчас без проблем работает на сетевых разделяемых ресурсах и в Windows 98. Формат BDB одно время рассматривался как более стабильный - просто потому, что использовался дольше, но, поскольку FSFS используется для реальной работы вот уже несколько лет, это соображение теперь не существенно. Прочтите Choosing a Data Store (Выбор формата хранилища) в Книге о Subversion для дополнительной информации.
Создайте пустую папку с именем SVN, (например, D:\SVN\), которая будет корневой папкой для всех ваших хранилищ.
Создайте другую папку MyNewRepository внутри D:\SVN\.
Откройте командную строку (или окно эмуляции DOS), перейдите в D:\SVN\ и введите
svnadmin create --fs-type bdb MyNewRepository
или
svnadmin create --fs-type fsfs MyNewRepository
Теперь у вас есть новое хранилище, расположенное в D:\SVN\MyNewRepository.
Откройте Проводник Windows
Создайте новую папку и назовите её, например, SVNRepository
Щёлкните правой кнопкой мыши на вновь созданной папке, и выберите → .
Хранилище будет создано внутри новой папки. Не редактируйте эти файлы самостоятельно!!!. В случае возникновения ошибок убедитесь, что папка пуста и доступна для записи.
У вас также спросят хотите ли вы создать структуру директорий внутри хранилища. О возможных вариантах структуры узнайте в «Организация данных в хранилище».
Когда TortoiseSVN создаст хранилище, то установит значок специальной папки, что вы могли проще определить локальные хранилища. Если вы создаете хранилище с помощью официального клиента командной строки, то этот значок папки не назначается.
TortoiseSVN больше не предоставляет возможность создавать хранилища, использующие BDB, хотя их всё ещё возможно создать при помощи клиента командной строки. Хранилища FSFS обычно более легки в обслуживании, а также делают для нас более лёгкой поддержку и TortoiseSVN - из-за проблем с совместимостью разных версий BDB.
TortoiseSVN не поддерживает доступ к хранилищам BDB в виде file:// из-за проблем с совместимостью, хотя, конечно, поддерживает этот формат хранилищ, если доступ к ним осуществляется через протоколы svn://, http:// или https://.
Мы также предлагаем, чтобы вы совсем не использовали доступ при помощи file://, кроме как в целях локального тестирования. Использование сервера более безопасно и более надёжно для всех задач, за исключением применения его для единственного разработчика.
Для доступа к вашему локальному хранилищу вам необходим путь к этой папке. Только запомните, что Subversion принимает все пути к хранилищам в виде file:///C:/хранилищеSVN/. Обратите внимание, что везде используется прямая косая черта.
Для доступа к хранилищу, находящемуся на сетевом разделяемом ресурсе, вы можете подключить этот ресурс как диск, или использовать путь UNC. Пути UNC используются в виде file://ИмяСервера/путь/к/хранилищу. Обратите внимание, что здесь только 2 ведуших прямых косых черты.
В версиях SVN до 1.2, пути UNC имели более запутанный вид file:///\ИмяСервера/путь/к/хранилищу. Хотя этот вид до сих пор поддерживается, использовать его не рекомендуется.
Не создавайте и не обращайтесь к хранилищу на основе Berkeley DB, которое находится на разделяемом сетевом ресурсе. Оно не может существовать в рамках удалённой файловой системы. И даже в том случае, если у вас назначена буква для сетевого диска. Если вы пытаетесь использовать Berkeley DB на разделяемом сетевом ресурсе, результаты непредсказуемы - вы можете увидеть загадочные ошибки сразу же, или могут пройти месяцы, прежде чем вы обнаружите, что база данных хранилища коварно испорчена.
Хотя в теории возможно разместить хранилище FSFS на сетевом ресурсе и предоставить доступ нескольким пользователям посредством протокола file://, это то, что совершенно точно не рекомендуется делать. На самом деле мы весьма не одобряем этого, и такое использование нами не поддерживается.
Во-первых, вы предоставляете каждому пользователю непосредственный доступ на запись к хранилищу, и любой пользователь может случайно удалить всё хранилище или испортить его каким-либо другим способом.
Во-вторых,не все протоколы разделения файлов по сети поддерживают блокировку, необходимую для Subversion, и вы можете обнаружить, что ваше хранилище повреждено. Возможно, это случится не сразу, но когда-нибудь два пользователя попробуют получить доступ к хранилищу в одно и то же время.
В-третьих, разрешения на доступ к файлам должны указываться очень аккуратно. Возможно, вам удастся это сделать на "родном" разделяемом ресурсе Windows, но на SAMBA это особенно трудно.
Доступ при помощи file:// предназначен только для локального использования одним пользователем, особенно для тестирования и отладки. Когда вы желаете предоставить общий доступ к хранилищу, вам на самом деле необходимо настроить подходящий сервер, и это не настолько сложно, как вы можете подумать. Прочтите «Доступ к хранилищу» для рекомендаций по выбору и настройке сервера.
Перед тем, как импортировать данные в хранилище, сначала подумайте о том, как вы хотите их организовать данные. Если использовать один из рекомендуемых способов, в дальнейшем вам будет намного легче.
Есть несколько стандартных рекомендуемых способов организации хранилища. Большинство людей создают папку trunk, в которой ведётся «основная линия» разработки, папку branches, содержащую копии ответвлений, и папку tags для копий меток. Если хранилище содержит только один проект, тогда их часто создают как папки верхнего уровня:
/trunk /branches /tags
Поскольку эта схема часто используется, то когда вы создаете новое хранилище с помощью TortoiseSVN, вам также будет предложено создать структуру директорий.
Если хранилище содержит несколько проектов, их часто упорядочивают по ответвлениям:
/trunk/paint /trunk/calc /branches/paint /branches/calc /tags/paint /tags/calc
...или по проектам:
/paint/trunk /paint/branches /paint/tags /calc/trunk /calc/branches /calc/tags
Упорядочивание по проектам имеет смысл, если проекты не сильно связаны, и каждый из них извлекается индивидуально. Для связанных проектов, где вы можете пожелать извлекать все проекты за раз, или где все проекты связанны друг с другом в один распространяемый пакет, часто лучшим является упорядочивание по ответвлениям. В этом случае у вас только один ствол для извлечения, и легче видимы взаимосвязи между подпроектами.
В случае принятия подхода, когда /trunk /tags /branches - папки верхнего уровня, незачем говорить, что для каждого ответвления и метки копируется весь ствол, и в некотором роде эта структура предоставляет наибольшую гибкость.
Для несвязанных проектов вы можете предпочесть использовать раздельные хранилища. Когда вы фиксируете изменения, изменяется номер ревизии для всего хранилища, а не номер ревизии проекта. Когда два несвязанных проекта совместно используют одно хранилище, могут образовываться большие промежутки в номерах ревизий. Проекты Subversion и TortoiseSVN обладают одним адресом сетевого узла, но у них полностью раздельные хранилища, делающие возможной независимую разработку, без путаницы по поводу номеров сборок.
Конечно, вы вольны игнорировать эти обычные схемы. Вы можете реализовать любые виды изменений - всё, что лучше работает для вас или для вашей команды. Помните, что выбранный вами вариант не является чем-то незыблемым. Вы можете реорганизовать хранилище в любое время. Поскольку ответвления и метки - это обычные папки, TortoiseSVN может перемещать или переименовывать их, как вы пожелаете.
Переход с одного способа организации на другой - это вопрос выполнения серии перемещений на сервере. Если вам не нравится, как организованы данные в хранилище, просто переставьте папки.
Итак, если вы пока ещё не создали основную структуру папок в вашем хранилище, это надо сделать сейчас. Есть два способа этого достичь: если вы просто желаете создать структуру /trunk /tags /branches (/ствол /метки /ответвления), вы можете воспользоваться обозревателем хранилища для создания этих трёх папок (за три отдельных фиксации). Если же вы желаете создать более разветвлённую иерархию, то проще сначала создать структуру папок на диске и импортировать её за одну фиксацию, вот так:
Создайте новую пустую папку на вашем жёстком диске
Создайте желаемую структуру папок верхнего уровня внутри этой папки - но пока не помещайте в них никаких файлов!
Импортируйте эту структуру в хранилище путём правого щелчка на папке и выбора → . В диалоге импорта укажите путь к вашему хранилищу и щелкните ОК. Тем самым вы импортируете вашу временную папку в корень хранилища и создадите основу для организации данных хранилища.
Обратите внимание: сама папка, которую вы импортируете, в хранилище не появляется, только её содержимое. Например, создайте следующую структуру папок:
C:\Temp\New\trunk C:\Temp\New\branches C:\Temp\New\tags
Импортируйте C:\Temp\New в корень хранилища, который станет выглядеть следующим образом:
/trunk /branches /tags