Структура проекта для продукта с разными версиями - PullRequest
2 голосов
/ 31 октября 2011

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

И все клиенты, конечно же, хотят воспользоваться официальными функциями, определенными всеми клиентами.

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

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

Спасибо за вашу помощь

1 Ответ

3 голосов
/ 31 октября 2011

Это большая, волосатая тема - у Мартина Фаулера есть отличная статья о ветвлении функций (http://martinfowler.com/bliki/FeatureBranch.html); есть также ветвление по абстракции (http://continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction/).

). Большой риск в том, что вы в конечном итоге будете использовать SVN.в качестве замены для «правильной» архитектуры. Если вам необходимо таким образом поддерживать несколько функций, вам, вероятно, следует разработать решение, поддерживающее это во время выполнения (через настройку) или во время сборки (через настройку);Обычный способ сделать это - использовать плагины.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...