Содержание
Каким бы протоколом вы ни пользовались для доступа к своим хранилищам, вам в любом случае потребуется создать хотя бы одно хранилище. Это может быть сделано как при помощи клиента 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 больше не предоставляет возможность создавать хранилища, использующие BDB, хотя их всё ещё возможно создать при помощи клиента командной строки. Хранилища FSFS обычно более легки в обслуживании, а также делают для нас более лёгкой поддержку и TortoiseSVN - из-за проблем с совместимостью разных версий BDB.
Будущие версии TortoiseSVN не будут поддерживать доступ к хранилищам BDB при помощи file:// из-за этих проблем с совместимостью, хотя TortoiseSVN, конечно, будет поддерживать этот формат хранилища при доступе к серверу по протоколам svn://, http:// или https://. По этой причине, мы настоятельно рекомендуем, чтобы все новые хранилища, доступ к которым должен осуществляться при помощи протокола file://, создавались в формате FSFS.
Мы также предлагаем, чтобы вы совсем не использовали доступ при помощи 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
Если хранилище содержит несколько проектов, их часто упорядочивают по ответвлениям:
/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