Вопрос о создании хранилища SVN - PullRequest
1 голос
/ 16 ноября 2010

Я проверяю текущую версию дизайна с текущей командой:

 svn checkout svn+ssh://test@example.com/mainrepository/trunk/projects/design1 .

Это прекрасно работает, и я внес некоторые существенные изменения в реализацию, так что я хотел бы держать копию этой вехи в SVN. Другими словами, Я хотел бы проверить в текущей версии в собственный каталог, то есть "design2":

При этом я хотел бы иметь возможность проверить эту версию, аналогичную описанной выше

 svn checkout svn+ssh://test@example.com/mainrepository/trunk/projects/design2 .

Я никогда не создавал новый каталог в SVN, поэтому мне интересно, нужно ли мне создавать Подпозиторий, чтобы иметь возможность проверить design2 следующим образом:

 su - svn
 mkdir svn+ssh://test@example.com/mainrepository/trunk/projects/design2
 svnadmin create svn+ssh://test@example.com/mainrepository/trunk/projects/design2

Есть ли проблема при создании этого файла из ранее извлеченных файлов? Я знаю, как бороться с SVN после этого шага, но я никогда не создавал новый каталог / репозиторий для новой реализации, поэтому любая помощь будет оценена!

Ответы [ 4 ]

3 голосов
/ 16 ноября 2010

Я предполагаю, что вы хотите создать новую ветвь, то есть вы хотите, чтобы design1 и design2 жили бок о бок, чтобы они могли расходиться.

Не создавайте новый репозиторий с svnadmin. Вместо этого сделайте это:

    cd design1
    svn status # make sure everything is ready as if for a normal commit
    svn copy . svn+ssh://server.ac.uk/mainrepository/trunk/projects/design2 -m "creating new branch for design 2"

Теперь удалите свою рабочую копию (она все еще указывает на design1 и содержит ожидающие изменения, даже если они были внесены в design2 - да, это сбивает с толку, лучше всего просто удалить ее). Создайте новую кассу для design2, чтобы вы могли продолжить вносить изменения и фиксировать:

   cd ..
   rm -rf design1
   svn co svn+ssh://server.ac.uk/mainrepository/trunk/projects/design2
   cd design2

Это несколько сложный способ зафиксировать изменения в новой ветке. Обычно вы сначала создаете ветку (svn copy url1 url2), проверяете ветку в отдельной рабочей копии и , а затем вносите изменения. В этом случае это невозможно, поскольку вы уже внесли изменения, предназначенные для новой ветви в первой рабочей копии.

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

1 голос
/ 16 ноября 2010

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

0 голосов
/ 16 ноября 2010

Обычно, если ваш проект структурирован по веткам, тегам и стволу (или что-то подобное), вы можете создать подпроект или подкаталог для редактирования, а затем объединить его со стволом (или рабочим проектом)

svn copy /projectRoot/trunk /projectRoot/branches/edit1 

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

0 голосов
/ 16 ноября 2010

Звучит так, как будто это должна быть отдельная ветка .Вы не хотите, чтобы люди, работающие над project1, также проверяли весь код для project2 (что они будут делать, если проверят на уровне соединительных линий).

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

...