2009-04-16 1 views
4

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

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

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

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

ответ

5

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

+1

+1 к svn: внешние. Они, безусловно, самый эффективный способ сделать это и прост. –

+1

Я нашел отличный учебник по этому вопросу для TortoiseSVN: http://justaddwater.dk/2007/10/23/setting-up-subversion-externals-with-tortoisesvn/ –

0

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

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

+0

Мы используем PHP с CVS (хотя мы можем переключиться к SVN). Но мне больше интересно узнать о подходе к управлению кодом, а не о конкретных инструментах. Хороший вопрос об модульных тестах. –

0

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

0

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

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

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

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

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

  • Нет связанных вопросов^_^