源代码pipe理与版本控制?

哪一个存储源代码版本的系统的正确名称,如SVN或TFS?

我一直把它称为源代码控制,但像维基百科这样的地方称之为版本控制?

为了使这个更复杂的网站,这样一个有两个标签?

  • 版本控制是更通用的术语,用于源代码pipe理工具,也用于其他工具(Word,OpenOffice,…)。 它引用了一个版本。

  • 源代码pipe理提供了分支和合并的版本控制,这在所有修订工具中并不总是可用(Word不是源代码pipe理,但提供版本控制function)

  • 版本控制是比源代码pipe理更通用的术语,因为它pipe理任何东西的版本(源或二进制文件或任何types的文档)

注:SCM代表“源代码pipe理”,也代表“软件代码pipe理”,以反映相同的想法(不仅仅是“来源”被pipe理)。
Plus SCM引入了一组文件之间的依赖关系的概念。
它还可以包括变更生命周期的概念(开始变更,结束变更,…),这导致变更请求系统。

我喜欢这样想:

修订控制他们做的

源代码pipe理我使用它们的。

🙂

有三个同义词描述几乎相同的事物:

  1. 修订控制 。 处理修订(文档/工件评论和文档/工件的后续版本)或编号 (作为修订概念的抽象)。
  2. 来源控制 。 处理文本 (源)文件,而不是二进制文件 。 只要更容易执行比较并获得文本文件之间的差异,这种差异就起到了很大的作用。 有一系列与源代码控制相关的基本工具: diffdiff3patch等。这套工具可以扩展成源代码控制解决scheme。 这种解决scheme的例子是RCS。
  3. 源代码pipe理 。 在源代码上处理更复杂的操作:将其存储在repository ,可以创build单独的branches 。 还假设分支可以merged 。 源代码pipe理的另一部分是tagging 。 源代码pipe理的一个问题是它具有缩写SCM。 这个缩写用来描述更广泛的活动 – 软件configurationpipe理 。 由于源代码pipe理软件configurationpipe理的一个子集,也涉及到构buildpipe理部署pipe理持续集成依赖关系pipe理发布pipe理等活动,因此存在很多混淆。
  4. 版本控制 。 它被用来替代诸如源代码pipe理这样的术语以避免歧义。 它包含了版本控制源代码控制的概念,使其能够描述几乎相同的概念。 目前,考虑到解决版本控制的两个任务的各种工具(CVS,SVN,Git,Mercurial,ClearCase,Perforce,VSS等),术语版本控制源控制同时进行。

图片更清楚地说明所有这些概念之间的区别:

在这里输入图像描述

  • 版本控制系统 (VCS)是最常用的术语
  • 源代码pipe理 (SCM)在git中被使用,但是它是一种发明,可能会被软件行业已经使用的软件configurationpipe理所困惑,这不是一回事。

使用的术语不是很精确。 有一篇文章描述了五个相关的维度。 用于软件开发的数据pipe理工具不一定同时支持其中的三个以上。 如果你想支持所有五个你必须描述一个开发过程:

  • 版本(语义:修改)
  • 视图(语义:等价,派生)
  • 层次结构(语义:由…组成)
  • 状态(语义:批准,可访问性)
  • 变体(语义:产品变体)

Peter van den Hamer和Kees Lepoeter(1996)pipe理devise数据:CAD框架,configurationpipe理和产品数据pipe理的五个维度,Proceedings of the IEEE,Vol。 第84号,第1号,1996年1月

某些系统(如SVN)有一个术语版本 ,代表与版本库中所有文件的特定版本相关的编号。 在这样的系统修订SVN修订 )本质上是指版本来源版本 )。 否则版本控制版本控制是相同的术语。

没有一个“正确”的名字,四个常用的名字是:

  • 版本控制系统
  • 修订控制系统
  • 源代码pipe理系统
  • 源代码pipe理系统

另一个名字是: 版本控制

基于本网站使用的标签,“源代码pipe理”是最stream行的(这是非常正常的,因为这个网站是关于编程):

  • 源代码pipe理(633标签)
  • 版本控制(587)
  • 版本控制(31)

MIL-STD 973介绍configurationpipe理。

软件configurationpipe理完全一样。

请参阅CMMI了解SCM / CM的一个很好的解释。

你所说的系统是版本控制系统。 他们版本的东西。

旧的SCCS是一个源代码控制系统。

源代码控制系统维护修订历史logging。

假设您从修订版本更改文件

1.1,1.2,1.3。

在1.3我们发布了我们的产品“真棒版”。

1.3是一个版本AwesomeEdition是一个版本。

在像CVS这样的系统中,修改是随着编号的变化而发生的,而标签则标记了版本。 SVNtypes存储库修订编号混淆了期望MIL-STDtypes行为的政府客户。

关于变更pipe理标准的好处是,有太多的select。

如果历史的优先顺序是什么,那么这个术语应该是源代码控制 – 参见http://en.wikipedia.org/wiki/Source_Code_Control_System

那么,你现在究竟在寻找什么?

我不认为有一个正确的术语。 这两个术语,以及其他答复中已经提到的其他一些术语都用于基本相同的事物。

即使在使用同一个单词的时候,你正在交谈的人也会将它连接到稍微不同的含义 – 即使使用另一个单词,他们也可能意味着完全一样的东西。

再次,围绕这些事物使用的词汇也可以围绕这个概念的不同软件实现围绕不同的(或附加到不同的含义)。

在写这篇文章的时候,我想到这是一个非常自然的现象 – 在其他方面,你也有多个词expression基本相同的含义 – 有些人会认为实际上有细微的差异,有些人会说这些差异不真的存在或不值得思考。 而且不能保证当两个人使用完全相同的单词时,他们确实意味着完全相同的东西。

我添加了一个评论,但我认为它也可以有资格获得答案。 我有一些不同的看法,那么其他一些意见已经expression出来了。

在一般的SCM(软件configurationpipe理)或(源代码pipe理 – 派生的术语)中,它很容易理解,因为它被用作包括修订控制以及基线pipe理等其他技术的总称。 请参阅http://en.wikipedia.org/wiki/Software_configuration_management 。 一般来说,从CVS到Git的现代SCM工具包括这些技术和许多更有用的function,如:权限控制,权限pipe理,安全审计,允许定制SCMstream(ClearCase),集成构build系统和问题跟踪软件等…我认为这个列表是开放的,因为任何与软件变更和pipe理相关的东西都可以在这里input。

所以主要的困惑来自理解版本控制,版本控制和可能的源代码控制之间的区别。 首先,包括“源”在内的所有术语都是派生的术语,我的意思是有些人被所有这些通用术语所困扰(configurationpipe理 – 那是什么?),并坚持认为它们特别适用于源代码,不关心其他用例; 这是公平点。

关于修订控制VS版本控制我认为正确的术语(在像SVN,Git的工具的上下文)是修订控制。 在我看来,“修订控制”一词的重点是pipe理(不仅仅是)源代码文件的变化(除了pipe理版本),而版本控制则强调只pipe理文件的版本。

理论上,有人可以编写一个软件,允许跟踪和pipe理二进制文件 ,没有二进制差异和合并支持,可以调用这个版本控制系统。 但是在像SVN这样的工具的情况下,Git还可以pipe理对文件的更改 :diffing,merge和Git着名的重新绑定。

因此,总结版本控制包括版本控制,更适合命名工具,如CVS,SVN,Git; 而源代码pipe理是一个派生的术语,如果想要命名一个特定的SCM方面,应该避免。

 SCM > Revision Control > Version Control