Как реинтегрировать ветку функции в копию ствола в SVN? - PullRequest
2 голосов
/ 11 марта 2011

Традиционный способ работы с функциональными ветвями показан на следующем рисунке ascci.

       FB o-------------------o
         /                     \
        /copy                   \ reintegrate 
       /                         \     
TRUNK-o---------------------------o---   

На самом деле реинтеграция моей функциональной ветви требует большого тестирования и также должна работать на сервере непрерывной сборки. Вот почему мне нужно сделать реинтеграцию в ствол в 2 этапа. Этот сценарий показан здесь:

enter code here
       FB    o--------------------o
            /                      \ reintegrate (problems here :-( )
           /                        \
          /               FB2    o---o----------------o
         /copy                  /                      \
        /                 copy /                        \ reintegrate
       /                      /                          \
TRUNK-o----------------------o----------------------------o--  

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

UPDATE Я узнал, как реинтегрировать ветвь функции в копию ствола:

       FB    o--------------------o
            /                      \ (2)reintegrate into the local trunk copy
           /                        \
          /                          \        FB2    o----o---------------o
         /copy                        \             /     ^                \
        /                              \   (3)copy /      |                 \ reintegrate 
       /                                \         /       |                  v
TRUNK-o----------------------------o-----\-------o--------|-------------------o--  
                                    \     |               |
                            (1)checkout  /                |(4) svn switch to FB                            
                                      v v                 |    + svn commit
                                      []-------------------
                             fresh checked out 
                             local working copy

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

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

Книга svn может быть полезна для вас по вопросу слияния и ветвлений.

1 голос
/ 11 марта 2011

Похоже, что вам нужно, это SVN слияние .

Что вам нужно сделать, это в основном объединить все различия между пунктами A и B ниже (см. схему) в ветку FB2.

Вы можете выполнить следующую команду (при условии, что ваша рабочая копия находится в ветке FB2):

svn merge -rA:B <url_of_FB_branch> .

, где A и Bномера ревизий в точках A и B на диаграмме ниже:

     FB    A o--------------------o B
            /                      \ reintegrate (problems here :-( )
           /                        \
          /               FB2    o---o----------------o
         /copy                  /                      \
        /                 copy /                        \ reintegrate
       /                      /                          \
TRUNK-o----------------------o----------------------------o--

Чтобы получить номер ревизии для A:

svn log --stop-on-copy <url_of_FB_branch>

и получить самую маленькую ревизиюномер (т.е. самый ранний) из списка

Для B это проще.Предполагая, что вы хотите получить последнее изменение из FB, просто используйте ключевое слово HEAD в качестве номера редакции для B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...