2013-11-12 3 views
0

(Я думаю, что это по теме ... не стесняйтесь исправлять меня, если это не так).Управление версией программного обеспечения

У меня есть программа. Используется внутренне для управления проектами и расписания.
Другие наши другие офисы также хотят использовать указанную программу.
Их требования различаются в разных местах.

Итак, что мне теперь делать?
Первоначально предполагалось, что у меня есть две отдельные программы. Очевидно, однако, это затрудняет применение исправлений ошибок для обоих.
Вторая мысль заключалась в том, чтобы развернуть программу на две ветви. Любой другой код должен быть удален из багажника и поддерживается только в филиалах. Таким образом, исправления ошибок и тому подобное могут быть применены на уровне магистрали, а затем «размножаться» до ветвей.

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

Есть ли предложения по наилучшему способу решения этой проблемы?

+2

Извините - на это нет реального правильного ответа. То, что вы делаете, будет определяться вашими конкретными обстоятельствами. Любые мнения голоса будут именно такими, и вопросы, затрагивающие в основном мнения, основанные на мнениях, не соответствуют теме. –

ответ

4

Проблема в вашем дизайне.

It программы очень похожи (только различаются варианты, брендинг и т.д.), то вы должны абстрактный из различий Into конфигурационных файлов, плагины и т.д.

Если программы только в некоторой степени похожи, вы должны перемещать все общие функции в библиотеки или базовые классы.

Основная идея заключается в факторизации общего кода и поддержании этого в . Остальная часть кода должна поддерживаться отдельно.

+0

Да, так похоже на ветвящуюся идею. Просто на более высоком уровне. Я подозревал, что это может быть дорога. Дизайн неудачен; это одна из тех ситуаций, когда кто-то видел это и ушел «о, это полезно, мы должны иметь это», а не что-то, что можно было бы заранее спланировать/разработать лучше. Таким образом, вытаскивание материала, вероятно, будет одним из основных начинаний :( – Trent

+0

К сожалению, это, вероятно, вопрос, который немного большой, чтобы получить большую помощь отсюда. Возможно, если вы предоставите более конкретные детали (язык, рамки/платформу, общий дизайн и т. Д. .) Мы могли бы больше помочь. Большинство языков (даже что-то дерьмовое, как VB6) должно позволить вам по крайней мере вытащить большие куски в повторно используемые модули. –

+0

Вы можете начать сегодня! Даже если это просто немые функции «utils». Вы можете начать * где-то * и медленно перемещать фрагменты в «общий» репозиторий, поскольку вы ставите их из ветвей. Я думаю, что это было бы подходящим местом для использования внешних SVN (указывающих на общее репо). –

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