SVN: выпуск веток и экстернов?

У нас есть два веб-сайта для одного и того же клиента (основной веб-сайт и другой для сайта электронной коммерции, который находится на отдельном сервере), которые используют общую часть кода (различные функции / стили / javascript и т. Д.). В настоящее время мы управляем этим, имея общий код в виде отдельных проектов (в тех же репозиториях) в SVN и используя svn: externals, чтобы перенести ветвь каждого из них в два проекта веб-сайта.

Мы только что создали две ветки релиза, по одной для двух сайтов. Все передается в транк для каждого из сайтов, как обычно, при работе, и когда «готово к жизни», мы объединяем его в ветку релиза для этого сайта. Работает, за исключением того, что сегодня мы изменили часть общего кода и заметили, что ветка релиза сразу же вытащила его, когда мы обновили ветку релиза. Это не то, что мы хотели :(

Так что любые идеи, как мы можем решить эту проблему. Мы использовали внешние функции, чтобы высушить совместное использование кода, но есть ли другой способ? Обратите внимание, что в этом вопросе (Как я могу выполнить ветвь в SVN и сделать так, чтобы она тоже разветвляла мои папки svn: external?) они упоминают, что внешние проблемы плохие, и мы должны использовать другой процесс сборки, но не упоминать, что это должно быть.

У нас есть CruiseControl.net, который запускает наши сборки, и мы хотим, чтобы этот орех взломали. У кого-нибудь есть идеи по улучшению процесса?

ура

Пит

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

Ответы на вопрос(5)

Ваш ответ на вопрос