Вопрос

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

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

Отредактировано для получения дополнительной информации:

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

Решение

  1. Делать рабочую копию trunk
  2. svn merge -r W:X svn://branchA workingCopy
  3. 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top