У нас есть два веб-сайта для одного и того же клиента (главный сайт www и другой для сайта электронной коммерции, который находится на отдельном сервере), которые используют общую часть кода (различные функции/стили/javascript и т.д.). В настоящее время мы управляем этим, предоставляя общий код в виде отдельных проектов (в тех же репозиториях) в SVN и используя svn: externals, чтобы потянуть ветвь каждого из них в два проекта веб-сайта.
Мы только что создали две ветки релиза, по одному для двух сайтов. Все становится привязанным к сундуку для каждого из сайтов, как обычно при работе, и когда "готово для жизни" мы объединяем его в ветку релиза для этого сайта. Работает с удовольствием, за исключением того, что сегодня мы модифицировали часть общего кода и заметили, что ветвь релиза сразу же ее удалила, когда мы сделали обновление в ветки релиза. Это не то, что мы хотели: (
Итак, любые идеи, как мы можем сгладить эту проблему. Мы использовали externals для СУХОГО совместного использования кода, но есть ли другой способ? Обратите внимание, что в этом вопросе (Как я могу входить в SVN и иметь ветвь моей svn: внешние папки?), они говорят, что внешние являются плохими, и мы должны использовать другой процесс сборки, но не упоминает, что это должно быть.
У нас есть CruiseControl.net, который работает с нашими сборками и очень хочет, чтобы этот орех был взломан. У кого-нибудь есть идеи относительно лучшего процесса?
Приветствия
Пит
ОБНОВЛЕНИЕ: Мы с тех пор перешли на использование Mercurial (Fogcreek Kiln) для нашего источника управления. Mercurial также имеет идею суб-репо, поэтому мы следовали этому маршруту и с нашим проектом. Однако это связано с себестоимостью, разветвление становится очень трудным, так как это мечение и просто держать все в курсе. Наш последний метод состоит в том, чтобы объединить оба проекта в один репозиторий, включая все общие репозитории. Это дает нам один "мегапроект", который замедляет время клонирования (проверка в SVN), но мы делаем это так редко, что выгоды от необходимости иметь дело с субрепозициями делают его хорошо стоящим. Теперь мы используем функцию переключения/переключения, а не ветвления, что также значительно упрощает наше развитие.