SVN хранилище настроено - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь настроить репозиторий в системе FreeBSD для моего курсового проекта.Код находится в ~ / OSI, затем я набрал следующие команды:

   % svnadmin create ///home/SVN/repo
   % svn co file:///home/SVN/repo
   % cd ~/OSI
   % chmod -R u+w include
   % svn add include

Тогда ошибка "."не рабочая копия.Нужно ли мне сначала импортировать ~ / OSI в / home / SVN / repo?

Ответы [ 3 ]

3 голосов
/ 22 июня 2011
% 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-адресов. Кроме того, это помогает отделить себя от хранилища. Начинающие считают это менее запутанным.

Для этого вам нужно сделать две вещи:

  1. Отредактируйте файл /home/SVN/conf/svnserve.conf.
  2. Создайте файл / 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 . Теперь, когда вы сделали это, вы обнаружите, что начальные главы стали намного понятнее.

0 голосов
/ 22 июня 2011

Ответ на ваш вопрос «Да», вам нужно сначала импортировать ~ / OSI в / home / SVN / repo.

После того, как вы импортируете эту папку в репозиторий SVN, вы можете удалить свою директорию OSI, извлечь свежую рабочую область из репозитория и перейти к следующему шагу.

% svn import ~/OSI file://home/SVN/repo/trunk
% rm -rf ~/OSI
% svn co file://home/SVN/repo/trunk/OSI
% cd ~/OSI
0 голосов
/ 22 июня 2011
...