Subversion лучшие практики и очистка - PullRequest
0 голосов
/ 14 декабря 2011

У меня довольно плохо спланированный репозиторий Subversion. И я хочу начать делать ветви. На самом деле, что я действительно хочу, так это «названные» известные хорошие версии, к которым я могу вернуться в случае необходимости. Похоже, что это сделано с SVN ветвями.

Проблема в том, что я никогда не настраивал свой репозиторий subversion с какой-либо достойной организацией. У меня нет репозитория / ствола, структура репозитория / веток. Все в моем корне репозитория, и единственные команды, которые я выполнил, это add, delete, mv и ci. Теперь, когда я достиг рубежа, я хочу пометить или разветвлять его.

Учитывая, что я не организовал организацию, как мне теперь встроить ветки в свой репозиторий для выполнения такой команды?

svn cp svn://server.com/svn/repository/trunk \
  svn://server.com/svn/repository/branches/your_branch \
  -m "Branching from trunk to your_branch at HEAD_REVISION"

Кроме того, поскольку мой исходный код находится в корне моего хранилища svn. Рекомендуется ли ведение домашнего хозяйства или хорошая практика? Я делаю это на стороне клиента или на стороне сервера?

Вопрос новичка. Пожалуйста, предоставьте svn команды и примеры.

Ответы [ 2 ]

4 голосов
/ 14 декабря 2011

Возможно, вам следует искать теги для именованных версий вместо веток:

http://svnbook.red -bean.com / о / 1,1 / ch04s06.html

Если ваш репозиторий содержит только код, относящийся к одному приложению / проекту, то было бы неплохо создать магистральную директорию и переместить в нее все, что у вас есть в данный момент. Затем на корневом уровне создайте каталог тегов (для тегов) и каталог филиалов (для филиалов). Все это можно сделать на стороне клиента (если вы не возражаете против дополнительных версий).

Что касается примеров, я не могу сказать вам точные команды и синтаксис, но вот краткий план, чтобы сделать это со стороны клиента:

  1. Извлечь из корня хранилища
  2. svn mkdir ствол, ветки, теги (создать нужные каталоги на корневом уровне)
  3. SVN переместить все существующие файлы и каталоги в транк
  4. SVN фиксирует изменения, которые вы только что внесли
  5. Выполнить пометку

Это должно быть очень просто, если у вас есть клиент SVN, такой как TortoiseSVN.

0 голосов
/ 23 декабря 2011

Что сказал Энди

Учитывая, что все находится в корне вашего репозитория, мне кажется, что лучшей идеей будет начать с нового репозитория, создать стандартные стволы / ветки / теги / папки в корне, скопировать проект в ствол /, отметьте его, а затем продолжите работу с новым хранилищем.

С этого момента используйте теги (не ветви) для именования релизов. Ветви предназначены для тех случаев, когда кому-то нужно работать над сложной проблемой в одиночку или выполнять экспериментальную работу, или если есть много изменений, требующих экспертной оценки, и вы не хотите сдерживать остальную часть команды. Обычно люди немного работают над ветвями, а затем на определенном этапе объединяются со стволом. Вместо этого теги никогда не меняются.

#make a copy of the code - cleaning up all the hidden .svn directories
cd /pth/to/original/code
find .  \! \( -name . -or -name ".svn" -or -path "*/.svn/*" \) -print  | cpio -padv /pth/to/where/you/want/your/copy


#on svn server, create new repository
svnadmin create /path/to/svn/new_repo 
svn mkdir /path/to/svn/new_repo/trunk -m "add a comment"
svn mkdir /path/to/svn/new_repo/branches -m "add a comment"
svn mkdir /path/to/svn/new_repo/tags -m "add a comment"

#import the code into the new repository
svn import -m "Start again" /pth/to/where/you/want/your/copy http://svn.example.com/new_repo/trunk

#tag the initial milestone
svn cp http://svn.example.com/new_repo/trunk http://svn.example.com/new_repo/tags/my_milestone -m "Release 1.0"

Вы можете использовать семантическое управление версиями для my_milestone, например 1.0.0 и т. Д.

...