Intereting Posts
Subversion с аутентификацией LDAP git selective возвращает локальные изменения из файла Использование инструментов разработчика Oracle с Source Control для Visual Studio Отменить Intellij Smart Checkout Продолжайте со старым фиксатором в Git SVN post commit hook для отправки пользователю электронной почты при изменении определенного файла Может ли pysvn 1.6.3 работать с Subversion 1.6 под linux? Автоматическая документация для Git совершает Почему Rational Team Concert изменяет последний измененный атрибут файлов? В python что такое <type 'revision'> Помимо SVN, как вы управляете своей разработкой, а не с исходным кодом для тестирования? Могу ли я объединить несколько последовательных наборов изменений в набор изменений в Mercurial SVN Несколько ветвей с «зависимостями» Как я могу запустить проект django в https? и что на самом деле это «https»? Как открыть эти приложения – визуальная студия, чтобы я мог запускать код?

Отрасли вендора, меркурийский стиль?

Сцена: купленное веб-приложение с регулярными обновлениями от поставщика. Затем мы тщательно настраиваем внешний вид, а иногда добавляем наши собственные функции или исправляем ошибку до того, как поставщик доберется до нее. Для контроля версий мы используем Subversion в соответствии со своей моделью «Поставщик» при каждом новом выпуске. Это имеет дополнительное преимущество, что у нас есть версия, управляемая версиями, ванильная копия их системы.

Проблема: мы хотели бы переключиться на Mercurial и, скорее всего, будем следовать шаблону ветвления стабильного / дефолта . Mercurial имеет смысл, если мы хотим получить только один выпуск от нашего поставщика и начать развивать его оттуда. Но по какой-то причине у меня возникают проблемы с тем, чтобы обойти мои мысли о том, как обрабатывать будущие выпуски от поставщика.

Моль: Любая помощь с «разветвлением вендора» Mercurial style была бы весьма признательна.

Solutions Collecting From Web of "Отрасли вендора, меркурийский стиль?"

Использование названных ветвей, как вы описали, является прекрасным выбором (хотя и не единственным ), но я бы предложил использовать несколько отдельных клонов в известных местах, чтобы облегчить этот процесс. Притворяясь, что http://host/hg/ является hgweb (ранее hgwebdir) для вашей установки (хотя ssh: // отлично работает, как угодно), у вас будет что-то вроде этого:

  • http://host/hg/vendor
  • http://host/hg/custom

Два отдельных репозитория, где поток данных от поставщика к пользовательскому, но не в другом направлении. Именованный филиал по default будет единственным в vendor и в custom вас будут как default и stable .

Когда вы получите новый код от поставщика, вы распакуете его в рабочий каталог vendor , а затем запустите:

 hg addremove hg commit -m 'new drop from vendor, version number xxx' 

Ваша история в репо-реестре будет линейной, и у вас никогда не будет ничего, что вы написали.

Теперь в вашем локальном клоне custom репо вы бы сделали:

 hg update default # update to the latest head in your default branch hg pull http://host/hg/vendor # bring in the new changes from vendor as a new head hg merge tip # merge _your_ most recent default cset with their new drop 

И тогда вы выполняете работу по слиянию местных возможностей с дефолтом с их новым снижением кода. Когда вы довольны слиянием (прохождение тестов и т. Д.), Вы нажимаете из своего местного клона на http://host/hg/custom .

Этот процесс может быть повторен по мере необходимости, обеспечивает хорошее разделение между вашей историей и их », и позволяет каждому из вашей команды нести ответственность за принятие нового кода от поставщиков, чтобы заботиться только о нормальной default/stable настройке в одном репо, http://host/hg/custom .

Я бы использовал ветку поставщика как дополнительную ветвь для стабильных по умолчанию. В итоге это выглядело бы примерно так:

 V1----V2-------------V3---------V4 Vendor \ \ \ \ D1----D2---D3--D4-D5-D6-D7-D8---D9 default \ \ \ S1----------S2---S3 stable