Мы - небольшой магазин независимых поставщиков программного обеспечения, и мы обычно отправляем новую версию наших продуктов каждый месяц. Мы используем Subversion в качестве нашего хранилища кода и Visual Studio 2010 в качестве нашей IDE. Я знаю, что многие люди защищают Mercurial и другие системы управления исходными кодами, но на данный момент я не понимаю, как мы могли бы извлечь из них пользу, но я могу ошибаться.
Наша главная проблема - как синхронизировать ветви и основной ствол.
Вот как мы делаем вещи сегодня:
- Выпустить новую версию (автоматически создать тег в Subversion)
- Продолжить работу над основным стволом, который выйдет в следующем месяце
И цикл повторяется каждый месяц и работает отлично. Проблема возникает, когда необходимо выпустить срочный выпуск службы. Мы не можем высвободить его из основного ствола (2), поскольку он находится в стадии интенсивной разработки и недостаточно стабилен, чтобы его можно было срочно освободить.
В таком случае мы делаем следующее:
- Создайте ветку из тега, который мы создали на шаге (1)
- Исправлена ошибка
- Тест и выпуск
- Вставьте изменения обратно в основной ствол (если применимо)
Наша самая большая проблема - объединение этих двух (ветвь с главной). В большинстве случаев мы не можем полагаться на автоматическое объединение, потому что, например:
- много изменений было внесено в основной багажник
- объединение сложных файлов (таких как файлы Visual Studio XML и т. д.) работает не очень хорошо
- другой разработчик / команда внесла изменения, которые вы не понимаете, и вы не можете просто объединить их
Так что, по вашему мнению, лучше всего поддерживать синхронизацию этих двух разных версий (отраслевой и основной). Чем ты занимаешься?