Вообще говоря, основная цель ветвления (VCS - система контроля версий - функция) заключается в достижении кода изоляция .
У вас есть по крайней мере одна ветвь, которая может быть достаточной для последовательной разработки и используется для многих задач, которые записываются (фиксируются) в той же уникальной ветви.
Но эта модель быстро показывает свой предел:
Когда у вас есть усилия по разработке (рефакторинг, эволюция, исправление ошибок и т. Д.), И вы понимаете, что не можете безопасно вносить эти изменения в ту же ветку, что и в вашей текущей ветке разработки (потому что вы нарушаете API или вводите код это сломало бы все) затем вам нужна другая ветвь.
(Чтобы изолировать этот новый код для прежнего, даже если два набора кодов будут объединены позже)
Так вот ваш ответ:
Вы должны выполнять ветвление всякий раз, когда вы не можете продолжить, и записать две попытки разработки в одной ветке.
(не имея ужасно сложной истории для обслуживания).
Ветвь может быть полезна, даже если вы единственный, кто работает с исходным кодом, или если вас много.
Но вы не должны делать «одну ветку на разработчика»:
цель «изоляции» предназначена для изоляции усилий по разработке (задача, которая может быть такой же общей, как «давайте разработаем следующую версию нашего программного обеспечения», или такой же конкретной, как «давайте исправим» ошибка 23 "),
не изолировать "ресурс" .
(ветвь с именем «VonC» ничего не значит для другого разработчика: что, если «VonC» покинет проект? Что вы должны с ним делать?
например, ветвь с именем bugfix_212 может интерпретироваться в контексте системы отслеживания ошибок, и любой разработчик может использовать ее по крайней мере с некоторым представлением о том, что он должен с ней делать)
Ветвь не является тегом (SVN является Revision System , которая пытается предложить функцию управления версиями , такую как ветвление и тегирование в каталогах с дешевой копией файла : это не значит, что тег - это ветка)
Определение ветви означает также определение рабочего процесса слияния : вам нужно знать, где слить ветку, когда вы закончите с ней.
Для этого, глава 7 Practical Perforce (Лора ВИНГЕРД - О'Рейли) является хорошим введением (независимым от VCS) для объединения рабочих процессов между различными видами ветвей: "
« Как программное обеспечение развивается » (pdf)
Он определяет термин codeline (ветвь, которая записывает важные этапы развития кода, либо через теги в определенных точках, либо через важное слияние с ветвью)
В нем представлена основная модель (центральная кодовая строка для записи выпусков) и описаны различные цели ветвления:
- Активные потоки разработки : постоянная кодовая строка при последовательных различных разработках
- ветви задач : недолговечные ветви для более конкретной задачи (исправление ошибок является классическим, но вы также можете определить ветку для усилий по слиянию, которые, как вы знаете, сложны для выполнения: вы можете объединять, фиксировать и тестировать в этой ветви задач, не создавая проблем для основной текущей ветви разработки)
- промежуточная ветвь : для подготовки выпуска с некоторыми данными или конфигурационными файлами перед подготовкой.
- Частные ветви, специальные ветви и разреженные ветви : для очень небольших задач, просто для того, чтобы можно было совершать некоторую работу в процессе, не дожидаясь официального завершения или проверки теста.
Это позволяет «делать коммиты рано, часто».
Другие интересные понятия о VCS: Основные понятия
(первоначально о ClearCase, но также и для любых VCS)