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