% svnadmin create ///home/SVN/repo
% svn co file:///home/SVN/repo
% cd ~/OSI
Вы полностью смущены различием между каталогом репозитория Subversion и вашим рабочим каталогом. Я давно преподаю Subversion, и это самая распространенная вещь, которая случается. Вы не можете использовать хранилище Subversion в качестве рабочего каталога. Вам придется начать все сначала, потому что вы, вероятно, повредили структуру хранилища.
Один шаг за раз.
- В вашем хранилище находится Subversion Сервер , в котором хранятся все версии всех файлов в вашем хранилище. Ты не трогай. Возможно, вы даже не знаете, где это, а может даже не быть на вашей локальной машине.
- Ваш рабочий каталог содержит копию определенной ревизии хранилища. Это делается через Subversion Клиент . Здесь вы все делаете, и он находится на вашем локальном компьютере, обычно в каталоге под вашим
$HOME
.
Итак, сначала вам нужно создать репозиторий. Для этого вы используете команду svnadmin
. Эта команда делает вещи с хранилищем. Команда:
$ svnadmin create <directoryName>
Обратите внимание, что в команде нет URL. На самом деле svnadmin
никогда не принимает URL, только физический файл, расположенный на локальном компьютере. То же самое верно для команды svnlook
. Они запускаются на сервере. В вашем случае вы хотите сделать это:
$ rm -rf /home/SVN/repo #Remove the old copy if its still there.
$ svnadmin create /home/SVN/repo
Спереди нужен только один слеш. Это имя каталога. Вы могли бы также сделать это:
$ cd /home/SVN
$ svnadmin create repo
А может быть, даже так:
$ svnadmin create ~SVN/repo #Hope you have write access in this dir!
Я настоятельно рекомендую использовать svnserve
в качестве сервера хранилища Subversion. Это облегчает ввод URL-адресов. Кроме того, это помогает отделить себя от хранилища. Начинающие считают это менее запутанным.
Для этого вам нужно сделать две вещи:
- Отредактируйте файл /home/SVN/conf/svnserve.conf.
- Создайте файл / hone / SVN / conf / passwd.
Сначала отредактируйте файл svnserve.conf
. Вам нужно будет изменить две строки:
Там будут две строки (11 и 12 в моей версии файла), которые выглядят так:
# anon-access = read
# auth-accesss = write
Снимите #
спереди. На самом деле, это по умолчанию, так что это не имеет значения. Если это ваш личный репо, вы можете изменить anon-access
на write
. Таким образом, вам не нужно входить в систему. Я лично держу их обоих такими, какие они есть.
Вокруг строки # 20 это:
# password-db = passwd
Снова удалите #
с начала строки. Вот и все. Сохраните этот файл.
Теперь в том же каталоге отредактируйте файл passwd
. Под строкой [Users]
поместите что-то вроде этого:
david = swordfish
david
- это ваш идентификатор пользователя. Я предлагаю вам сделать тот же ID, что и ваш Unix ID. swordfish
- это пароль. Сделай это как хочешь. Если вы хотите, чтобы другие могли иметь доступ к этому хранилищу, просто поместите их здесь, по одному пользователю в строке, в том же формате, что и ваши имя пользователя и пароль. Сохраните файл passwd
. Вам больше никогда не придется трогать эти файлы.
Теперь мы начнем svnserve
. Вам нужно будет делать это всякий раз, когда вы перезагружаете свою систему. Возможно, вы даже захотите поместить скрипт запуска в каталог /etc/init.d:
$ svnserve -r /home/SVN/repo -d
(Одна маленькая деталь ... Убедитесь, что пользователь под управлением svnserve
владеет каталогом и всеми файлами в /home/SVN/repo
. В противном случае команда svnserve
не сможет читать / записывать необходимые файлы Так как вы делаете все это под вашим идентификатором пользователя, это должно быть хорошо).
Вот и все, теперь вы можете перейти в другое место и создать рабочий каталог . Сделайте это в вашем домашнем каталоге. Притворись, что /home/SVN/repo
даже не существует.
$ cd $HOME
$ svn co svn://localhost my_workdir
$ cd my_workdir
$ svn mkdir trunk tags branches #Why the hell not?
$ svn commit -m "Made the basic directory layout"
Где-то вдоль линии, он может попросить ваш пароль. Просто вставьте тот же файл, который вы использовали в файле passwd
. Вы только что создали свой первый коммит. Вы создали три базовых каталога trunk
, branches
и tags
. Вам нужно было сделать это? Нет.
Обратите внимание, что вы в ~/my_workdir
, а не в /home/SVN/repo
. Обратите внимание, поскольку я использую svnserve
, я даже не упомянул этот каталог. /home/SVN/repo
- это каталог Сервера. Ты не трогай! Как я уже сказал, это очень возможно - как клиент - вы даже не знаете, где он находится.
Теперь ваш импорт:
$ cd trunk
$ cp ~/OSI .
$ svn add -R OSI
Вау! Нет svn import
? Нет, у нас есть рабочий каталог (~/my_workdir
), поэтому мы можем просто добавить файлы. Команда Subversion svn add
рекурсивно добавит в каталог OSI
и все файлы и подкаталоги. Вы можете запустить команду svn status
и убедиться, что все файлы были добавлены.
Теперь все, что вам нужно сделать, это отправить свои изменения:
$ svn commit -m"Added in OSI files"
Обратите внимание, что мне нужен URL svn://localhost
только для команды svn co
. Мой рабочий каталог уже знает URL, с которого он был извлечен. Вы можете запустить svn info
и просмотреть эту информацию.
Теперь попробуйте это:
$ cd ~
$ rm -rf my_workdir
Мы полностью удалили всю работу, которую вы только что сделали. Тем не менее, хранилище Subversion все еще имеет его. Давайте проверим это снова:
$ svn co svn:/localhost/trunk/OSI
Это создаст каталог OSI
со всеми вашими OSI, которые вы импортировали в хранилище Subversion. Это ваш новый рабочий каталог. Обратите внимание, что я указал транк / OSI. Теперь вы можете выполнять всю свою работу там и фиксировать все свои изменения.
Надеюсь, это поможет вам кое-что прояснить. Теперь прочитайте Руководство пользователя Subversion . Теперь, когда вы сделали это, вы обнаружите, что начальные главы стали намного понятнее.