版本控制系统

要求

所选版本控制系统是 Git.

托管站点的源代码,例如 GithubBitBucket, 提供一个易于部署且价格低廉的内部托管替代方案。

理论基础

(参见中的概述 项目管理基础设施

Version Control 或修订控制是对文档、计算机程序、大型网站和其他信息集合的更改进行管理。受版本控制的文件集保存在 repository .

这个 版本控制系统 (VCS)是负责跟踪存储库的连续版本的应用程序。

如果没有受版本控制的存储库,项目信息很快就会在文件系统和电子邮件附件上分散和复制,从而导致不一致和不可管理。如果再加上清晰的操作程序,VCS可以大大简化对项目文档和源代码更改的管理。

在此项目中,需要版本控制:

  • 管理技术文件(要求、分析、设计、规范和API文件);

  • 管理不同组件的源代码;

  • 管理最终用户文档的制作和翻译。

其他要求包括:

  • 文档和源代码存储库必须在同一个VCS下。

  • 文档和源代码存储库应与项目管理/问题跟踪系统集成。

备选方案分析

下表比较了4种与已建立的版本控制产品兼容的版本控制产品 COTS selection constraints


Comparison of version control software

表图例

特征

描述

版本库模型

在客户机-服务器模型中,用户通过客户机访问主存储库;通常,他们的本地计算机只保存项目树的工作副本。一个工作副本中的更改必须提交到主存储库,然后才能传播给其他用户。在分布式模型中,存储库充当对等方,用户通常拥有一个本地存储库,除了工作副本之外,还具有可用的版本历史记录。

并发模式

描述如何管理对工作副本的更改,以防止同时编辑在存储库中导致无意义的数据。在锁模型中,在用户请求并从主存储库接收文件的独占锁之前,不允许进行更改。在合并模型中,用户可以自由地编辑文件,但在将其更改检查到存储库中时会收到可能的冲突通知,因此版本控制系统可以合并双方的更改,或者让用户决定何时发生冲突。

储存方法

描述存储库中存储文件的形式。快照表示提交的文件存储在其整体中,通常是压缩的。在此上下文中,变更集表示提交的文件以不同于前一版本或下一版本的形式存储。

变更范围

描述是为单个文件还是整个目录树记录更改。

修订ID

在内部用于标识存储库中文件的特定版本。系统可以使用伪随机标识符、修订的内容哈希或具有顺序版本号的文件名。

网络协议

列出用于同步更改的(安全)协议。

用户界面

描述是否可以使用Internet浏览器、通过第三方问题跟踪系统或使用命令行(CLI)和第三方图形用户界面(适用于Windows和Linux平台)访问存储库。

集成IDE

列出了允许将VCS与两个通用集成开发环境(IDE)集成的工具示例: Eclipse 和微软 Visual Studio

原子提交

是指保证所有的变更都已作出,或者根本不会作出任何变更。

支持合并跟踪功能

描述系统是否记住在哪些分支之间合并了哪些更改,并且只合并在将一个分支合并到另一个分支时丢失的更改。

文件重命名

描述系统是否允许在保留文件的版本历史记录的同时重命名文件。

事件挂钩

指示在操作(如提交)发生之前或之后触发命令的功能。

签署的修订

指修订版的集成数字签名,格式如OpenPGP。

行尾转换

描述系统是否可以调整文本文件的行尾字符,使其与所用操作系统的行尾样式相匹配。

Unicode文件名支持

指示软件是否支持使用不同字符编码的文件系统下的互操作。

资料来源: version control software comparison (改编)

评价

产品之间的主要区别在于集中 (Subversion) 或分布式 (Bazaar, Git, Mercurial) 存储库的性质。分散式系统相对较新(2005年之后),但已获得广泛认可,因为它们允许更灵活的项目组织(例如,为更大的项目做出贡献的较小团队之间的协作),并且不要求每个用户都连接到单个在线存储库。(在互联网或企业内部网上)。分散的系统也可以支持“类似集中”的工作流,只需定义保存“官方”或批准版本的规范(权威)存储库。

从功能上讲,评估中不会出现明确的“赢家”:

  • 所有产品都有在线托管服务(即可以将存储库存储在Web上)。

  • 所有系统都支持安全网络协议,如SSL或HTTPS(除了各种专有协议)。

  • 可以使用各种用户界面:Web界面(包括与问题跟踪系统(如Redmine或Trac)的集成)、类似于bash的命令行界面(CLI)和各种本机或第三方图形用户界面(GUI)。

  • 出于软件开发目的,所有版本控制系统都可以使用插件耦合到集成开发环境(IDE)。下面列出了两个常见的多语言IDE的示例: Eclipse 和微软 Visual Studio .

  • 产品之间的主要特性是相似的(尽管命令和典型的工作流都不是)。

最后的选择是通过评估软件在实际开发项目中的采用情况来进行的。

真实世界的使用

开发人员社区活动的基本信息可通过以下方式获得 Ohloh indicators on version control systems .

使用一个简单的标准评估软件采用情况:

  • 对于这个项目,不同的开源COTS所使用的版本控制系统是什么?

Comparison of VCS adoption by software projects

类似的一般趋势在 results of the Eclipse Community Survey 2012 .

结论

根据软件采用结果, Git 显然是推荐的版本控制系统。