Вся плутанина випливає з різної семантики, яку MS використовує для "Build number" і особливо "Revision". Терміни просто означають різні речі.
Більшість людей (включаючи мене) використовують семантичну схему нумерації версій, де ви просто отримуєте більш високе БУДІВЕЛЬНЕ число, коли вам доведеться робити нову збірку з будь-якої причини. Для нас виправлення вважається лише черговою зміною коду, і частина BUILD збільшується автоматично з кожним запуском CI. Модулі з тим же MAJ.MIN.REV вважаються взаємозамінними, і BUILD повідомляє вам, який з них є останнім.
Зростання REVISION, однак, вказує на нову гілку постійного випуску, тому ми ставимо її перед BUILD. Мінусом цього підходу є те, що ми можемо отримати таку послідовність подій:
- номер 4711: Аліса додала функцію A
- CI виробляє збірку 1.2.3.100
- номер комітету 4712: Боб змінено функцію B
- номер 4713: фіксована функція A Alice ("виправлення")
- CI виробляє збірку 1.2.3.101
Як бачите, виправлення не є єдиною зміною, що міститься в наступній збірці, також модифікація Боба стає частиною цієї збірки. Якщо ви хочете стабілізувати поточну гілку, ви можете зіткнутися з проблемами, оскільки ви ніколи не можете бути впевнені, додав чи ні Боб купу помилок.
MS використовує обидва терміни по-різному. Номер BUILD не збільшується автоматично, замість цього його можна вважати видом гілки випуску, щоб заморозити код, який використовується для певної версії коду. ПЕРЕВІРКА вказує на додаткові "гарячі" зміни, застосовані до цієї гілки BUILD. Отже, послідовність буде такою:
- номер 4711: Аліса додала функцію A до магістралі / майстра
- Карл створює відділення для побудови
1.2.100
- CI виробляє збірку 1.2.100.0
- номер комітету 4712: Боб модифікував функцію B в магістралі / головному
- номер комітету 4713: Алісова фіксована функція А у
1.2.100
відділенні
- CI виробляє збірку 1.2.100.1
Термін REVISION може позначатися
- продукт перегляд (це, як більшість людей використовують його)
- перегляд конкретної щоденної збірки (саме це робить MS)
Ключова відмінність між двома процесами полягає в тому, хочете ви чи ні, можливість застосовувати виправлення до збірок CI, і, таким чином, в який момент у процесі робиться гілка. Цей аспект стає важливим, коли ви хочете мати можливість вибрати конкретну збірку в будь-який час після того, як всі тести пройшли успішно, і просувати саме цю версію до наступного офіційного релізу вашого продукту.
У нашому випадку інструмент CI створює тег репозиторію, тому у нас завжди є необхідна інформація, готова до використання, коли це необхідно. З SVN стає ще простіше, оскільки теги та гілки реалізуються точно так само - тег - це не що інше, як гілка, розташована під /tags
.
Дивитися також
З розділу FAQ на стратегії розгалуження TFS :
У якій гілці я повинен зафіксувати квиток P1 (виправлення)?
P1 має бути зафіксований у гілці, найближчій до бази коду, що працює у виробництві. У цьому випадку P1 слід зафіксувати у відділенні Prod. Застосовуючи виправлення в будь-якій іншій галузі та виконуючи зміни у виробництві, ви ризикуєте звільнити напівфабрикат або неперевірений код від наступних ітерацій.
Тепер ви можете заперечити, чи безпечно працювати безпосередньо проти гілки Prod, подумайте ще раз, P1, який потребує негайної уваги, не повинен бути принциповою проблемою в системі. У випадку, якщо це принципова проблема, її слід додати до нестабільності продукту, оскільки це може потребувати подальшого аналізу та обговорення із замовником.
Ще одне добре прочитане - посібник з розгалуження TFS