Рассмотрим следующую ситуацию:
- Разработка в основном выполняется в транке.
- Ветви используются при исправлении сложных ошибок или разработке новых (сначала нестабильных) функций.
Обычно эти ветви затем объединяются в транк после завершения разработки. Ветвь - 1 используется в качестве текущей ветки выпуска (скажем, в настоящее время "R-1.0").
- Теги используются для выпуска (будет "R-1.0.0").
Теперь необходимо исправить сложную ошибку, которая находится как в транке, так и в текущем выпуске 1.0.0:
- Будет создана ветка "BG-1" из ствола.
- Ошибка будет исправлена в этой ветке.
В то же время развитие будет продолжено в стволе.
Как вы теперь продолжаете реинтегрировать ветку в транк и "R-1.0"?
- Объединить транк в "BG1", затем реинтегрировать "BG1" в транк и затем в "R-1.0"".
=> Это не может быть решением, так как" R-1.0 "получит все, что былонаходится в стволе начиная с версии 1.0, которая не является целью. - Попробуйте реинтегрировать «BG1» в ствол, а затем в «R-1.0» без объединения ствола.
=> Это также не может работать какдругие изменения, которые не были частью версии 1.0, уже являются частью ветви "BG1".
Есть ли какое-либо решение этой проблемы?
Единственное решение, которое я вижу, это начать "BG1 "от" R-1.0 ", а не багажник на первом месте.Если это так, значит ли это, что для каждой ветви исправления ошибок разработчик должен найти самый старый поддерживаемый выпуск, который содержит ошибку и ответвление из этой ветви выпуска?
Обновление :
практика выполнения всех разработок внутри и из транка возникла из этого ответа "Джима Т" , который мне действительно нравится.