Проблема в слиянии веток SVN в транк - PullRequest
1 голос
/ 10 ноября 2009

У меня есть ствол (A) и две ветви (B и C). Когда я объединяю A с C, все в порядке, после того, как я объединяю A с B, предыдущий C перезаписывается, и мой ствол не имеет изменений C.

Что я хочу, так это A + B + C в магистраль после слияния.

Отредактировано для более подробного объяснения:

  1. В транке у меня 3 файла: «ФАЙЛ 1», «ФАЙЛ 2» и «ФАЙЛ 3»;
  2. Я создаю ветку из ствола как "Ветвь 1";
  3. Я переключаюсь на «Ветвь 1», исправляю ошибки в файле «FILE 1» и фиксирую;
  4. В то же время другой человек создает ветку из ствола как «Ветвь 2»;
  5. Этот человек исправит другие ошибки в файлах "ФАЙЛ 2" и "ФАЙЛ 3" и зафиксирует их;
  6. "Ветвь 2" одобрена для публикации, затем я объединяю "Ветвь 2" с "стволом" (все нормально);
  7. На следующий день «Ветвь 1» утверждается, затем я объединяю «Ветвь 1» с «стволом», и «ствол» теряет изменения из «Ветви 2».

Ответы [ 4 ]

5 голосов
/ 10 ноября 2009

Если вы используете Subversion 1.5 или выше, я думаю, что вы хотите "реинтегрировать" свои ветви обратно в ствол, см. http://blog.red -bean.com / sussman /? P = 92

3 голосов
/ 10 ноября 2009
  1. Сделать рабочую копию trunk
  2. svn merge -r W:X svn://branchA workingCopy
  3. svn merge -r Y:Z svn://branchB workingCopy

Я думаю, что это даст вам то, что вы хотите, то есть транк плюс любые изменения, сделанные любой веткой. Однако вам придется иметь дело с конфликтами.

1 голос
/ 10 ноября 2009

Ваша терминология не ясна. Когда вы говорите, что «объединяете А с В», значит ли это, что вы сливаете А в В или В в А? Можете ли вы объяснить, что именно вы сделали, чтобы создать ветви, и как вы пытались сделать слияние? Также для слияния важно, какую версию SVN вы используете.

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

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

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

0 голосов
/ 10 ноября 2009

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

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