针对不同客户定制的项目应采用什么版本控制策略?
我很好奇其他人会在 java 项目(Web 应用程序)上应用什么源版本控制策略,该项目很可能为多个客户进行定制。
该项目将有一个标准版本,但对于某些客户来说,需要进行一些定制(在不同的分支上)。
通过阅读这个线程: 我应该在开发/维护网络应用程序? 我想“按版本分支”适合项目标准版本的开发。
现在,在处理客户分支时,会对其他客户/标准版本将受益的代码进行一些改进/错误修复,这意味着对于每个分支都会有合并和合并。进行测试以使一切保持最新。
作为一个限制,对于这个项目,我们坚持使用 CVS 作为源版本控制系统。
对于构建的工件的版本控制,我们将使用 maven(依赖:artifactId、groupId、版本、分类器 - 客户名称 - 以便清楚地区分工件)。
I am curious about what source versioning strategy would others apply on a java project (web application) which is very probable to have customization for several customers.
The project will have a standard version, but for some of its customers there will be some customizations to be done (on different branches).
By reading this thread :
What branching strategy should I use during the development/maintenance of a web application?
I guess that the "Branch by release" would fit for the development of the standard version of the project.
Now while working on a customer branch there are some improvements/bugfixes performed on the code on which other customer/standard version would benefit this would mean that for each of the branches there will be merges & tests to be performed in order to be keep everything up to date.
As a constraint, for this project we are stuck with CVS as a source versioning system.
For versioning of the artifacts which are built we'll use maven (dependy : artifactId, groupId, version, classifier - customer name - in order to clearly distinguish the artifacts).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议为每个客户创建一个分支,并为每个功能创建一个分支,并让您的主干代表您的“标准版本”。
任何小错误修复都将合并回主干,然后传播到所有分支。对于新功能也是如此,因为您可以将它们合并回主干并杀死分支。
您的所有客户分支都将是长期存在的,您将在那里进行特定于客户的自定义,并从这些分支中发布。
I would recommend creating a branch per customer AND a branch per feature and letting your trunk represent your "standard version".
Any small bug fixes would be merged back to the trunk and subsequently propagated out to all branches. The same would hold true for new features, as you would merge them back to the trunk and kill the branch.
All your customer branches would be long-living, and you would make your customer-specific customizations there and would release from those branches.