Несколько приложений с общим кодом, как к этому подойти?

В моей компании есть два или три веб-приложения, в которых используется много общего кода - настраиваемая среда MVC, служебные классы, библиотеки JavaScript и т. Д.

Мы бы предпочли не дублировать весь этот код в каждом приложении, потому что в итоге мы используем несколько немного разных его версий. Но мы не хотим, чтобы приложениям требовалась одна и та же точная копия этого кода, потому что мы не хотим, чтобы обновление одного приложения могло потенциально нарушить работу другого.

Есть ли у кого-нибудь советы по решению этой проблемы? Я не думаю, что ищу технический ответ - скорее, просто общий подход.

Мы могли бы превратить код в библиотеку и позволить приложениям оставаться в более старой версии библиотеки, пока они не будут готовы к обновлению. Или мы могли бы сделать это в нескольких библиотеках, чтобы нам не приходилось обновлять все сразу. Но станет ли трудно управлять взаимозависимостями между версиями библиотек?


person JW.    schedule 16.04.2009    source источник


Ответы (4)


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

person Otávio Décio    schedule 16.04.2009
comment
+1 к svn: externals. На сегодняшний день это наиболее эффективный и простой способ сделать это. - person Joonas Pulakka; 16.04.2009
comment
Я нашел отличный учебник по этому поводу для TortoiseSVN: justaddwater .dk / 2007/10/23 / - person Michael La Voie; 16.04.2009

Это зависит от многих, многих факторов - разные языки по-разному относятся к библиотекам. Обычно я с этим справляюсь, чтобы каждое приложение имело батарею тестов для его внешних зависимостей, включая библиотеки, которые я написал, и использовать это, чтобы обновления указанных библиотек не нарушали работу приложения.

Есть дополнительные сведения о платформе, которую вы используете? Могут быть специальные инструменты, которые помогут с вашими конкретными потребностями.

person Don Werve    schedule 16.04.2009
comment
Мы используем PHP с CVS (хотя мы можем переключиться на SVN). Но меня больше интересует подход к управлению кодом, чем конкретные инструменты. Хорошее замечание о модульных тестах. - person JW.; 16.04.2009

Я подключаю SVN к svn: externals. У нас есть клиент и сервер, у которых есть общий код. Код поддерживается на сервере (но может быть перемещен в собственное хранилище), и клиент загружает его с помощью svn: externals. Канал клиента извлекается из магистрали сервера. Но когда мы разветвляемся (скажем, для выпуска), мы привязываем извлеченное внешнее к определенной ревизии, ветке или тегу. Если вы этого не сделаете и вернетесь к старой ветке и обновите, вы можете получить ствол общего кода, что, скорее всего, не то, что вам нужно.

person Jason    schedule 16.04.2009

Я бы создал одну ветку системы управления версиями для общего кода, представляющего последнюю и лучшую версию.

Затем для каждого проекта создайте свою собственную независимую ветвь этого кода, где вы можете вносить быстрые исправления, где это необходимо, или сохранять стабильность, когда приближается к выпуску.

Вы можете захотеть иметь Wiki, где перечислены ошибки, обнаруженные в общем коде, чтобы другие пользователи общего кода знали об этом и получали время, чтобы исправить это в свое удовольствие.

Для этого хорошо подойдет Git, так как он хорош при слиянии изменений с «главной» веткой.

person Community    schedule 16.04.2009