Subversion объединяет транк в существующий тег - PullRequest
0 голосов
/ 28 января 2011

В данный момент у меня в SVN-репозитории установлена ​​следующая настройка:

-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.
Вопрос теперь в том, есть ли способ сделать объединение «онлайн», без необходимости сначала создавать рабочую копию.

Ответы [ 2 ]

9 голосов
/ 28 января 2011

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

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

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

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

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

см .: http://svnbook.red -bean.com / ru / 1.5 / svn.ref.svn.c.merge.html

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

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

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

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

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

0 голосов
/ 28 января 2011

Вы на самом деле не задаете вопросов, поэтому я не уверен, знаете ли вы о подкоманде 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')

Я также рекомендую прочитать главу Ветвление и слияние в книге Subversion.

...