Ми невеликий магазин ISV, і ми щомісяця постачаємо нову версію своєї продукції. Ми використовуємо Subversion як наш сховище коду, а Visual Studio 2010 як наш IDE. Мені відомо, що багато людей виступають за Меркурій та інші системи управління розподіленими джерелами, але на даний момент я не бачу, як ми могли б отримати з них користь, але я можу помилитися.
Наша основна проблема - як зберігати гілки та основний стовбур синхронізовано.
Ось як ми робимо справи сьогодні:
- Випустити нову версію (автоматично створити тег у Subversion)
- Продовжуйте роботу над головним магістраллем, який вийде в наступному місяці
І цикл повторюється щомісяця і працює чудово. Проблема виникає, коли потрібно випустити терміновий сервіс. Ми не можемо звільнити його з основного магістралі (2), оскільки він перебуває у важкому стані, і він недостатньо стійкий, щоб його терміново відпустити.
У такому випадку ми робимо наступне:
- Створіть гілку з тегу, який ми створили на кроці (1)
- Виправлення помилок
- Тестуйте та відпустіть
- Поверніть зміну назад до основного магістралі (якщо застосовується)
Наша найбільша проблема - об'єднання цих двох (галузь з основною). У більшості випадків ми не можемо покластися на автоматичне злиття, оскільки, наприклад:
- в основний магістраль було внесено багато змін
- об'єднання складних файлів (наприклад, файлів XML Visual Studio тощо) працює не дуже добре
- інший розробник / команда внесла зміни, які ви не розумієте, і ви не можете просто об'єднати їх
Тож, на вашу думку, є найкращою практикою синхронізувати ці дві різні версії (гілки та основні). Що ти робиш?