Проблема слияния ветки в ствол после реорганизации хранилища - PullRequest
3 голосов
/ 29 сентября 2010

В течение очень долгого времени мы выполняли всю нашу разработку и развертывание из транка.Через некоторое время это привело к тому, что производственная среда не синхронизировалась с транком, поскольку мы получили запрос на перенос новой функции «B» в производство, но приостановили работу новой функции «А» - в основном мы извлекали из транкаво временную папку, а затем выборочно объединить файлы из временного в производственное (что не контролировалось версиями)

После слишком долгой борьбы с этим я, наконец, решил реорганизовать репозиторий, чтобы обеспечить его ветвление, но ясделал несколько ошибок при перемещении (svn mv) транка, чтобы я мог освободить место для папок веток и тегов (ранее не было папки «транка», файлы просто находились в родительской папке проекта) и конечный результатв том, что мой «ствол» теперь новее, чем некоторые ветви, которые я из него создал.И теперь я не могу выполнить слияние ветвей обратно в ствол без пропусков множества изменений и получения множества конфликтов.(Я уже обновил ветку из ствола.)

Если я запускаю svn log --stop-on-copy на своем стволе, самая ранняя ревизия - r14376, а если я запускаю ее на своей ветке, самая ранняя ревизия - r14368.(HEAD находится на r14710)

Как я могу сделать правильное слияние, не теряя все свои изменения между r14368 и r14376?Я просто собирался выполнить ручное слияние с транком, но затем я потерял всю свою историю ревизий для файлов ветви.

Ответы [ 3 ]

1 голос
/ 30 сентября 2010

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

$ cd trunk
$ svn update
$ svn merge svn://server/project/trunk@14376 svn://server/project/branches/46@14710 .
--- Merging differences between repository URLs into '.':

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

0 голосов
/ 29 сентября 2010

Трудно ответить, не видя более подробной информации о том, что происходит с вашим репо, но, возможно, вы можете удалить текущую папку «ствол», а затем скопировать исходную псевдоствол (то есть корень репо) в папку транка в ГОЛОВА. Я думаю, что это даст вам оригинальную псевдоствол в качестве новой папки «ствол» с сохраненной историей. Предполагая, что вы впервые начали изменять корень репо в rX, команды будут выглядеть примерно так:

svn rm url/trunk
svn commit -m "Removing broken trunk"
svn cp -rX url/@X url/trunk
svn commit -m "Creating new trunk from previous root"

Затем вы можете попытаться слить ветку обратно в ствол. Если у вас возникают конфликты с кодом соединительной линии, попробуйте объединить все ревизии минус те, которые вы внесли в код соединительной линии (я допускаю, возможно, ошибочно, что вы обновляете соединительную линию как отдельные коммиты).

0 голосов
/ 29 сентября 2010

Тем не менее я задал вам вопрос: мое утверждение таково, что вы должны знать, что вы делаете.Так что никто в компании не будет бормотать, что sth не работает, .... Читайте о слиянии в svn book:
http://svnbook.red -bean.com / ru / 1.5 / svn-book.html # svn.branchmerge.advanced.advancedsyntax

...