2011-01-28 3 views
0

я в настоящее время, имеющий следующую установку в моей SVN-репозитории:Subversion объединить ствол в существующий тег

-Root 
--ProjectA 
----trunk 
----tags 
----branches 
--ProjectB 
----trunk 
----tags 
----branches 
--ProjectPool 
----projectA 
----projectB 

Где ProjectPool содержит конкретные тег Projecta и ProjectB.

Теперь теги в ProjectPool меняются время от времени. Это означает, что определенная магистральная версия ProjectA завершена, и я хочу создать копию из этой версии в Root/ProjectPool/projectA. Новый тег должен заменить старый тег, но должна быть доступна история.

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

Это позволило бы мне заглянуть в историю Root/ProjectPool/projectA и увидеть изменения в ней. Вид истории пересмотра высокого уровня.

UPDATE:
Я сожалею, что я забыл задать четкий вопрос -.-
После просмотра ответов, которые не были до сих пор приехали, я бы сказал, что копии проектов в ProjectPool филиалы оригинальные проекты. Тогда я мог бы объединить их с багажником в любое время, когда мне нужна новая версия ProjectPool.
Вопрос теперь в том, есть ли способ сделать слияние «онлайн», не создавая первую рабочую копию.

ответ

7

> > Теперь теги в ProjectPool меняются время от времени.

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

> > Это означает, что конкретный ствол-версия Projecta является поручена, и я хочу, чтобы создать копию из этого пересмотра в Root/ProjectPool/Projecta. Новый тег должен заменить старый тег, но должна быть доступна история.

Что вам здесь нужно, это branch из ProjectA под ProjectPool который можно повторно объединить с trunk из ProjectA. С чем-то вроде этого

svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH] 

относятся: http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.merge.html

> > Это позволит мне заглянуть в историю Root/ProjectPool/Projecta и увидеть изменения этого. Вид истории пересмотра высокого уровня.

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

-Root 
    +--ProjectPool 
     +--ProjectA 
      +----trunk 
      +----tags 
      +----branches 
     +--ProjectB 
      +----trunk 
      +----tags 
      +----branches 

Вы можете выпустить Projecta и ProjectB в их tag с. Более новая разработка будет продолжена в trunk. Для любой стороны разработки или создания пятна создайте branch в каталоге филиалов. Когда ветка завершена, объедините ее обратно в багажник. Таким образом, ваш trunk всегда будет отражать все изменения и изменения. И это более удобно (и условно).

Надеюсь, это поможет.

+1

+1 идеальное объяснение для безопасного/нормального репо макета –

+0

Вы написали, что мне нужна ветка под 'ProjectPool', которую я должен повторить с помощью соединительной линии. Это именно то, что я имел в виду при написании «Это похоже на наличие ветви на моем компьютере, которую я никогда не меняю и время от времени сливаю в нее ствол». Теперь я ищу способ слияния «онлайн» без необходимости получать рабочую копию. – MOnsDaR

+0

@MOnsDaR, что вы хотите, - это комманда 'merge' и' commit'. Я серьезно сомневаюсь, что это возможно. Слияние полного процесса - это 'merge',' resolve' и 'commit' в этой последовательности. Я понимаю, что в вашем случае 'разрешения' нет, но' SVN' не может предположить эту возможность. Итак, я думаю, вам придется совершать явно. Команда, указанная в URL-адресе, будет объединена в текущем каталоге. Итак, если вы уверены, что можете написать сценарий оболочки. Это слияние и фиксация. Но все равно будут загружаться. – Nishant

0

Вы не реально сделать любой вопрос, так что я не уверен ли вы осведомлены о merge подкоманде, но это один вам нужно:

Обратите особое внимание к параметру --accept; вам это нужно для того, чтобы получить автоматическое разрешение конфликтов:

C:\>svn help merge 
[...] 
    --accept ARG    : specify automatic conflict resolution action 
          ('postpone', 'base', 'mine-conflict', 
          'theirs-conflict', 'mine-full', 'theirs-full', 
          'edit', 'launch') 

Я также рекомендую прочитать Branching and merging главу в книге Subversion.

Смежные вопросы