Svn слияние ствола и ветвей

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

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

Мне нужно объединить исправления ошибок из соединительной линии в ветвь 1, добавив новые функции в ветку.

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

Поэтому мне нужно исправление ошибок для версии 1, новая ветка для версии 2 и, конечно, слияние исправлений ошибок в версии 2.

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

Может кто-нибудь дать мне совет, что делать?

Привет

Ответ 1

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

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

Если вы исправляете /branches/ 1.2.x, соглашение об именах, которое использует проект Subversion, заключается в создании ветки backport, называемой 1.2.xr [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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

svn merge url://[email protected] url://[email protected] .

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

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

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

запись в блоге: ariejan.net/2006/11/24/svn-how-to-structure-your-repository/