VCS和SCM有什么区别?(VCS指版本控制系统,SCM指软件配置管理)

76
我正在研究实践中的版本控制,并且在书籍和论文中有两个名称指代同一件事情:软件配置管理(SCM)和版本控制系统(VCS)。前者似乎深受软件工程师/Java程序员欢迎,而后者则更受系统管理员欢迎,但在外行人看来,两者似乎意思相同。
另一方面,过去我曾将SCM解释为像puppet或cfengine这样的东西。有没有人能为我正确解释这两个术语的实际含义?最好给出具体的例子。

22
我认为您混淆了首字母缩写词,我相信您的意思是源代码管理而不是软件配置管理。在这种情况下,它们没有区别,只是同一件事的两个不同名称。http://www.google.com.au/search?q=define:scm - Matthew Scharley
@Matthew - 这很可能是情况。 - JimDaniel
另一方面,这个人相当受人尊敬,并使用软件配置:http://www.scmpatterns.com/book/ - jldugger
请参考有关版本控制系统的 https://dev59.com/wnNA5IYBdhLWcg3wL6yx#1056947。 - VonC
1
我认为 SCM 缩写比 VCS 更受欢迎的一个主要原因是:VCS 很容易与 CVS(Concurrent Version System)混淆。 - Michael Dorner
2个回答

127

注意, SCM 可以涉及版本控制的不同含义:

此外,人们可能使用SCM来指代其他名称:

  • 源代码管理,如源代码控制系统中所示
  • 软件代码管理,但这是对软件配置管理的曲解
  • 源代码配置管理,与软件配置管理相同,但更关注源代码而不是整个软件(设置、命令行参数、主机参数...)

让我们定义它们:

  • 版本控制系统是独立的软件,用于管理版本(如Git...)
  • 源代码管理VCS相同
  • 软件配置管理是所有管理软件更改的过程:开发(VCS),发布交付(VCS),缺陷跟踪,软件设置,主机/网络设置,与其他软件的版本/设置交互...

因此,仅使用首字母缩写SCM是令人困惑的:有些人可能会理解为与VCS相同的含义,而另一些人可能会理解为VCS只是整个过程的一个方面。

50

版本控制系统就是提供版本控制功能的软件,比如Git、Subversion和TFS版本控制等都属于这个范畴。

软件配置管理是一个更广泛的术语,包括构建、打包和部署软件所需的所有过程,其中也包括版本控制系统。它并不是指软件本身。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接