Нещодавно я почав ставити свій код під контроль версій (у лабораторії, де я працюю, під 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
Можливо, це потрібно зробити разом із тегами, правда?
Питання!
У будь-якому разі, моє запитання полягає в тому, що виходячи з вашого досвіду, який із цих методів виявляється більш практичним? Чи є відомий найкращий метод там (що, можливо, я сам не з'ясував)? Як це зазвичай робиться?