Хорошо, я собираюсь быть немного более благочестивым и твердо стоять на пороге наличия ствола, меток и веток для каждого проекта.
Основная альтернатива - иметь один ствол, теги и ветви со всеми проектами внизу.
Однако это приводит к ряду проблем, одна из которых является существенной, и я подробно опишу здесь:
Прежде всего, это открывает путь к неприкасаемой библиотеке, где все боятся прикоснуться к определенной библиотеке, потому что любое изменение может нарушить что-то тонкое в каком-то случайном проекте. Причина этого в том, что, поскольку между проектами нет разделения, любой может эффективно изменить код в вашем проекте, если вы не сможете ни обнаружить его, ни контролировать.
Что происходит, так это то, что однажды вы проверяете свой проект и его сборку, на следующий день вы проверяете его и он терпит неудачу, но вы внесли без изменений в ваш проект. Случилось так, что кто-то изменил библиотеку, от которой вы зависели. В большой структуре с множеством зависимостей для разработчика нереально тестировать изменения в своих библиотеках для каждого проекта, особенно если им приходится вносить критические изменения. В вашем проекте вам нужна ссылка на конкретную версию библиотеки. Таким образом, библиотека обновляется только при изменении ссылки на последнюю версию.
Этот вид ссылки имеет 3 эффекта: 1 Ваш проект изолирован от случайных промежуточных изменений разработки библиотеки. 2 вы получаете ревизию в вашем проекте , которая говорит вам, что «я сейчас использую эту версию библиотеки». 3. Когда вы вносите изменения в свой проект, вы получаете контроль, чтобы учесть любые критические изменения в библиотеке.
Есть и другие проблемы, которые я могу решить, если этого недостаточно.