Я недавно начал ставить свой код под контроль версий (в лаборатории, где я работаю, под SVN, и мои собственные коды в github (очевидно, с git)). Перед использованием контроля версий я делал что-то подобное. У меня была папка с названием библиотеки, внутри многих папок с номером версии. Каждый раз, когда я хотел начать работать с более новой версией, я делал копию последней версии, менял имя на новую версию и начинал внедрять.
Это, однако, кажется излишним, когда папка находится под контролем версий. Помимо избыточности, если кто-то хочет получить последнюю версию, он будет загружать все версии, если он просто import
с / clone
с.
Сейчас я вижу много способов сделать это с помощью контроля версий, но, поскольку я новичок в этом, я не знаю, какой из них более удобен в обслуживании.
Способ 1: использование тегов
Если бы я правильно понял теги, у вас была бы основная ветка, вы вносили любые изменения и отмечали их версией. Затем, когда вы хотите получить рабочую копию, вы получите копию с определенным тегом. (поправьте меня если я ошибаюсь)
Способ 2: версии ветвления
В этом методе основной ветвью будет ветвь разработки. Время от времени, когда создается стабильная версия (скажем v1.2.0
), вы создаете ветку для этой версии и никогда не фиксируете ее. Таким образом, если вы хотите скачать определенную версию, вы получите код из этой ветки. Хотя я и сказал, что вы никогда не фиксируете его, возможно, можно исправить ошибки и зафиксировать ветку старой версии, чтобы сохранить работоспособность старой версии. Например, если текущая версия есть v2.0
, но есть люди, которые хотят ее использовать v1.2
, вы можете получить другую ветку v1.2
, а именно v1.2.1
и зафиксировать исправления ошибок, или просто оставить версию такой же, как v1.2
и просто зафиксировать исправления ошибок.
Таким образом, ветви будут выглядеть так:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
Таким образом, у вас есть ветки для каждого второстепенного обновления версии. (Обратите внимание, что на графике выше v1.2.1 и v1.2.2 или созданные после выпуска v2.0.0, поэтому они не были частью разработки между v1.2.0 и v2.0.0. Думайте об этом как о поддержке более старых версий)
Способ 3: ветвление развития
Этот метод противоположен предыдущему. Основной веткой будет последняя стабильная версия. Всякий раз, когда вы работаете над новой версией, вы создаете ветку (для разработки), работаете над своим кодом и, когда он стабилен, объединяете его с основной веткой.
В этом случае ветви будут выглядеть так:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
Возможно, это нужно сделать вместе с тегами, верно?
Вопрос!
Во всяком случае, мой вопрос заключается в том, что, исходя из вашего опыта, какой из этих методов окажется более практичным? Есть ли лучший известный метод (который я, возможно, сам не понял)? Как эти вещи обычно делаются?