2015-01-27 3 views
1

Я использую SVN и мой репозиторий содержит ствол:СВН филиал в синхронизации с стволу

trunk 
| 
|_____A 
| 
|_____B 
| 
|_____C 

У меня также есть 2 ветви с такой же структурой, как ствол:

branch 
| 
|_____DEV 
     | 
     |_____A 
     | 
     |_____B 
     | 
     |_____C 
| 
|_____PROD 
     | 
     |_____A 
     | 
     |_____B 
     | 
     |_____C 

Ствол является используемые для постоянной разработки, и ветви имеют ту же структуру, что и в багажнике, но для разных сред (например, DEV и PROD). У меня есть определенная папка (папка «A»), обычная как в соединительной линии, так и в ветке DEV, которую я хотел бы синхронизировать, т. Е. Любые изменения, сделанные в папке «A» в соединительной линии, автоматически отражаются в ветке DEV в папке ' А».

Каков путь? Я попытался построить сценарий пост-фиксации, чтобы каждое изменение, сделанное в соединительной линии, было автоматически привязано к ветке, но до сих пор я не преуспел.

ответ

0

Но зачем вам создавать ветку в этом случае? Есть несколько проблем, которые этот подход.

  1. Параллельное развитие не представляется возможным, как и в случае, как если команда работает на стволе совершает что-то, чтобы решить некоторые проблемы, это может нарушить параллельное развитие происходит на branch1 или branch2. Рассмотрите усилие stablizing branch1 или branch2 для чего важно.

  2. Вы увидите много случаев конфликта, происходящих в багажнике и ветках.

Основываясь на моем опыте работы над несколькими проектами развития, вот моя рекомендация. Надеюсь это поможет.

Храните репозиторий в качестве родителя и ежемесячно определяйте план слияния (скажем). Это, безусловно, будет иметь силы слияния, но усилия по стабилизации будут уменьшаться.

Еще одна вещь, которая может быть выполнена, - иметь зависимость maven в ветках, которые будут использовать последнюю версию, выпущенную родительским репозиторием. Поэтому можно избежать копирования всего репозитория при создании ветки.

+0

Моя идея состояла в том, чтобы сохранить папку ветви только для чтения. Команда разработчиков будет заниматься только сундуком. Изменения будут отражены в филиале – user1135357

+0

. Здесь вам нужно ввести план слияния. Это также можно автоматизировать с помощью сценариев Jenkins. Но не очень часто меняйте код. – Rupesh

0

Какая полная разница между PROD и DEV Окружающая среда? Это несколько файлов, один другой каталог? Это целая куча файлов?

Обычно что-то вроде этого обрабатывается как часть процесса сборки . Затем, во время процесса сборки , вы можете создать выпуск для разработки или производства.

Некоторые проекты, которые состоят из ничего, кроме PHP или файлов JavaScript, действительно не нужно строить. В этом случае просто запишите файлы в качестве артефакта, который вы можете развернуть. Просто убедитесь, что файлы включены для правильной среды. Преимущество заключается в том, что после установки сборки вы можете делать такие вещи, как тестирование единиц и дыма.

В Дженкинс, вы можете построить два артефакта, один для DEV и один для PROD. Если конкретная сборка для DEV хороша, вы уверены, что артефакт PROD для этой сборки тоже хорош.

Вы также можете создать единый артефакт для развертывания, а процесс развертывания изменить артефакт развертывания для правильной среды. Или используйте что-то вроде Zookeeper, чтобы сохранить переменные среды и настройки в экземпляре Zookeeper и просто использовать один артефакт, который можно развернуть в любой среде.

Нет причин использовать две отдельные ветки, которые необходимо синхронизировать друг с другом.

Смежные вопросы