Version control 选择版本控制工作流程

Version control 选择版本控制工作流程,version-control,Version Control,我的任务是研究如何改进公司处理版本控制的方式 背景 目前我们使用Borland StarTeam,它有一些问题。除了经常难以使用之外,支持它的工具(IDE支持、代码审查等)的数量非常少 我们公司大约有40名开发人员,但我们有很多不同的项目。一个给定的项目通常有3-6个软件开发人员一起工作。 我们的项目范围从(大部分)嵌入式系统和FPGA开发到桌面应用程序 当前的工作流程高度集中,只有一个“视图”(接近StarTeam语言中的一个分支),项目中的每个人都在该视图上工作 其中一个项目以以下方式使用多

我的任务是研究如何改进公司处理版本控制的方式

背景 目前我们使用Borland StarTeam,它有一些问题。除了经常难以使用之外,支持它的工具(IDE支持、代码审查等)的数量非常少

我们公司大约有40名开发人员,但我们有很多不同的项目。一个给定的项目通常有3-6个软件开发人员一起工作。 我们的项目范围从(大部分)嵌入式系统和FPGA开发到桌面应用程序

当前的工作流程高度集中,只有一个“视图”(接近StarTeam语言中的一个分支),项目中的每个人都在该视图上工作

其中一个项目以以下方式使用多个视图: 有一个平台视图,其中没有进行开发。然后,该视图为两个特定产品提供了两个子视图,这两个产品共享大多数代码(通过平台视图),但它们之间的差异足以将它们分开。 所有开发都是在两个产品视图中进行的,有时产品视图中的代码会升级到平台视图(平台视图会自动用于其他产品)

另一个项目似乎在添加主要功能时使用了主视图和功能视图

我们通常需要长期支持软件并提供软件更新

我们的一些产品有大量不同的版本。不同的版本将共享大部分代码,但某些部分是并且必须有明显的不同

开发人员在其开发工作站上同时使用Windows和Linux

主意 我的想法是切换到使用现代DVCS。我正在考虑的工作流程是,每个项目都有许多公共分支,每个开发人员都可以克隆这些分支并进行工作。然后,每个项目都可以确定是否每个人都可以自由提交,或者我们是否应该拥有某种守门人系统,其中代码在提交给公共分支之前需要通过人工或自动构建系统

关于分支设置,我的想法是在以下场景中使用发布和功能分支:

假设我们从开发开始,最终发布产品的1.0版。然后,我们发现我们需要更多的功能,所以我们的目标是2.0版本,并为此开始一个新的分支。在处理2.0版本分支时,我们仍然可以在1.0版本分支上进行维护,从而发布1.1版本,等等

在处理2.0分支时,我们发现了一个已修复的安全问题。因为它在1.0分支中也可用,所以代码也被后端口到1.0分支

在2.0分支中的某个时候,人们发现系统的某些部分确实需要完全重做才能创建feature X。一个新的公共2.0-feature-X分支已经创建并开始工作。完成后,该分支中的工作将合并回主2.0分支

实际问题 希望你现在还在读:)

  • 上述工作流程(发布和特性分支)是否可行?有坑落要注意吗

  • 在一个产品有一个平台分支和多个产品分支的场景中,处理这个问题的最佳方法是什么?创建主分支和产品分支是否有效?当两个产品分支出现分歧时是否存在问题?他们能分歧多少

  • 我错过什么了吗?我主要是从开发人员的角度来看待VCS,因此我可能缺少从配置或发布管理器的角度来看很重要的东西


  • 对于你的第二个问题,我认为你可以共享平台相关的代码和不同产品共享的“大多数代码”,并且只对使产品“不同”的源代码进行分支。使用Share,如果在一个项目中修改了某个项,则更改将同时反映在其他项目中。对于分支机构,文件及其副本是独立的


    因此,这两个产品分支可以根据您的需要进行分化。

    您现在谈论的是StarTeam,还是某种一般概念?您能解释一下如何在git、bazaar或hg或其他dvcs中设置此功能吗?一般概念。不知道共享在git、bazaar或hg中是如何工作的,也不知道这些风投是否支持此功能。在Visual SourceSafe和VSS样式的版本控制系统中,至少share和branch的工作方式与我的回答相同。