Svn, объединяющий соединительную линию и ответвления

У меня есть огромный проект.

Я должен сделать ответвление - это будет версией 2 проекта, но я также должен сохранить соединительную линию и изменить ее параллельно с ответвлением 1 как исправление ошибки к версии 1.

Я должен объединить исправления ошибок от соединительной линии до ответвления 1 при добавлении новых опций к ответвлению.

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

Таким образом, мне нужны исправление ошибки для версии 1, новое ответвление для версии 2 и конечно объединяющий исправления ошибок в версии 2.

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

Кто-то может дать мне совет, что сделать?

С уважением

11
задан casperOne 4 May 2012 в 21:11
поделиться

4 ответа

Сначала вы должны создать «тег» для вашей версии 1, которая является выпущенной версией вашего продукта. Версия 2 проекта будет продолжением магистрали, а не веткой версии 2. Единственная причина, по которой вам может понадобиться создать ветку, - это исправить ошибки в (выпущенной) версии 1. Все, что вы делаете для новой версии, будет выполняться в основной ветке, если у вас нет причин не делать этого.

0
ответ дан 3 December 2019 в 11:20
поделиться

Создание ветки с целью исправления ошибок для более старой версии называется ветвью выпуска . Вам следует разработать исправления ошибок в основной системе (потому что они должны быть включены во все новые версии, верно?). Оттуда вы снова объединяете их с версиями, которые все еще поддерживаются. Это означает, что, когда версия 1 больше не поддерживается, вы перестаете добавлять в нее исправления ошибок. Дополнительную информацию см. В документации .

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

Если вы исправляете /branches/1.2.x, соглашение об именах, которое использует проект Subversion, заключается в создании ветки обратного порта с именем 1.2.x-r [REVNUM], где REVNUM указывает на ревизию, которую вы переносите, или 1.2.x-issue [ISSUENUM], где ISSUENUM указывает на проблему, которую вы исправляете.

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

svn checkout .../branches/1.2.x myproduct-1.2.x
svn merge --reintegrate .../branches/1.2.x-r123 myproduct-1.2.x

После реинтеграции ветки ветвь должна быть удалена.

6
ответ дан 3 December 2019 в 11:20
поделиться

После слияния изменений из основной ветви в ветку я считаю, что лучше всего объединить ветвь обратно в транк, использующий слияние двух URL. Насколько я понимаю - реинтеграция , это просто более простой синтаксис для слияния двух URL, которое иногда терпит неудачу (хотя в последний раз я использовал реинтеграцию в версии 1.5).

svn merge url://trunk@mergedRev url://branch@HEAD .

Где mergedRev - это ревизия, когда вы в последний раз объединяли ствол в ветку.

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

Что касается структуры вашего репозитория, я могу предложить запись в блоге (см. Ниже, поскольку мне разрешено использовать только одну ссылку в моем сообщении) из записи блога ariejan.net

: ariejan.net/2006/11 / 24 / svn-how-to-structure-your-repository /

0
ответ дан 3 December 2019 в 11:20
поделиться

Прежде всего, я предлагаю вам взглянуть на документацию SVN , предложенную @SanderRijken, и узнать, какие ветки функций и выпуска являются .

Но судя по звучанию вашего вопроса, я предполагаю, что ваша главная проблема в другом. А именно, что никакое слияние вообще не «работает» (т.е. все дают конфликты там, где вы их не ожидаете). Так что, может быть, вы могли бы уточнить, что вы делаете точно (например, опубликуете команду, которую вы используете для слияния)?

0
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: