Проблема в SVN слияние ветвей в багажник
Вопрос
У меня есть ствол (A) и две ветви (B и C). Когда я сливаюсь с C, все в порядке, после того, как я сливался с B, предыдущий C его перезапись и мой туловище не имеют изменений C.
Что я хочу, так это A + B + C в багажник после слияний.
Отредактировано для получения дополнительной информации:
- В багажнике у меня есть 3 файла: «Файл 1», «Файл 2» и «Файл 3»;
- Я создаю ветвь из багажника как «Branch 1»;
- Я переключаюсь на «Branch 1», я исправляю ошибки в файл «файл 1» и Commit;
- В то же время другой человек создает ветвь из туловища как «ветвь 2»;
- Этот человек исправляет другие ошибки в файлы «Файл 2» и «Файл 3» и совершение;
- «Филиал 2» одобрен для публикации, а затем я объединяю «филиал 2» в «туловище» (это в порядке);
- В следующий день одобряется «филиал 1», а затем я объединяю «ветвь 1» с «туловищем», а «ствол» теряет изменения из «ветки 2».
Решение
- Делать рабочую копию
trunk
svn merge -r W:X svn://branchA workingCopy
svn merge -r Y:Z svn://branchB workingCopy
Я думаю, что это даст вам то, что вы хотите, а это багажник, а также любые изменения, внесенные любым филиалом. Однако вам придется иметь дело с конфликтами.
Другие советы
Предполагая, что вы используете Subversion 1.5 или более http://blog.red-bean.com/sussman/?p=92
Ваша терминология не ясна. Когда вы говорите, что «слияете А с Б», означает ли это, что вы сливаете A в B или B в A? Можете ли вы объяснить, что именно вы сделали, чтобы создать филиалы, и как вы пытались сделать слияние? Кроме того, для слияния важно, какую версию SVN вы используете.
Я предлагаю вам внимательно прочитать Глава о ветвлении и слиянии В книге SVN.
По сути, когда у вас есть филиал функций (что у вас есть), вы неоднократно сливаете ветвь в нее. Затем SVN регистрирует, какие изменения вы объединили, и больше не объединит их. Когда вы закончите со своей ветвью, вы реинтегрируете его в багажник и отклоняете его.
Все это делается на вашем диске, по одной ветви за раз, разрешает потенциальные конфликты после каждой ветви и проверяя на каждом шаге. (Если по какой -то причине вам нужно применить изменения в стволе за одну проверку, вы можете объединить свои ветви в свежую ветвь от ствола, а затем объединить эту ветвь в ствол, когда закончите.)
Вы хотите применить слияния к своему рабочему пространству, а не в хранилище. В качестве альтернативы вы можете использовать CVS, которые имеют дело с ветвями гораздо более превосходным, чем SVN.