SVN объединить переименованные проекты в транк - PullRequest
1 голос
/ 24 марта 2011

В настоящее время я пытаюсь объединить некоторые изменения из ветви обратно в транк, изменения в ветке и название каждого проекта в транке. Итак, для простоты, скажем, корень ствола выглядит так ...

company-name-services
company-name-security
company-name-web

и ветка выглядит так ...

services
security
web

Следующие команды были запущены в ветке, чтобы привести его в текущее состояние ...

svn mv company-name-services services
svn mv company-name-security security
svn mv company-name-web web

После этого произошли изменения кода как в ветви, так и в стволе. Теперь, когда я выполняю слияние, в своей рабочей копии для ствола я использовал Tortoise SVN для слияния, выбрав «Реинтегрировать ветку» в качестве типа слияния и выбрав путь к ветке в качестве «От URL» в результате выполнения это у меня сейчас в моей рабочей копии ...

company-name-services
company-name-security
company-name-web    
services
security
web

Папки company-name- * помечены для удаления, а остальные помеченные папки помечены для добавления. Проблема заключается в том, что все файлы в папках проекта с размеченными именами не имеют связанной с ними информации истории, и даже худшие изменения, которые произошли в стволе, отсутствуют в папках с разметкой. Я думал, что SVN будет достаточно интеллектуален, чтобы вносить изменения из транка и сохранять историю после слияния, учитывая, что папки были переименованы с использованием инструмента командной строки svn. Ожидаемых результатов я ожидаю или есть какой-то другой способ, которым я должен выполнить слияние?

Ответы [ 3 ]

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

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

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

См. SVN книгу , в частности Chapter 4, Branching and Merging, подзаголовок Creating a Branch.

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

Чтобы понять, почему это произошло, вы должны понять, как svn выполняет слияние.

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

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

Я полагаю, что вы можете преодолеть это, вручную объединяя каждую подпапку из вашей ветви с соответствующей подпапкой в ​​вашей стволе. Я не знаю команд Tortois для этого, но командная строка будет выглядеть так (при условии, что вы запускаете корневую папку в транке):

> cd company-name-services
> svn merge -r <insert first revision after rename>:HEAD <insert url to sub-folder in branch> .

и т. Д. Для каждой подпапки

0 голосов
/ 25 марта 2011

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

@ Кен Я, возможно, не ясно в своем посте, я не использовал svn mv для создания веткиЯ использовал Tortoise для ветвления, выпуская команду, которая, я считаю, будет эквивалентна чему-то вроде этого ...

svn cp http://my.server/repos/myRepo/trunk \
    http://my.server/repos/myRepo/branches/my-branch 

в командной строке, затем изнутри ветки я выдал команды svn mv для переименованияпапки в корне репозитория.

@ sstendal Я попробую ваше предложение, когда доберусь утром на работу, и отвечу с результатом.

...