源代码控制的理论(和术语)

时间:2020-03-05 18:40:07  来源:igfitidea点击:

我已经尝试将源代码控制用于几个项目,但仍然不太了解。对于这些项目,我们使用了TortoiseSVN,并且仅进行了一行修订。 (没有主干,分支或者任何分支。)如果有建议的方法来设置源代码控制系统,它们是什么?以这种方式进行设置的原因和好处是什么?集中式和分布式源代码控制系统的工作之间的根本区别是什么?

解决方案

回答

将源代码管理视为源代码的巨大"撤消"按钮。每次签入时,都会添加一个可以回滚的点。即使我们不使用分支/合并,仅此功能也是非常有价值的。

此外,通过具有一个"权威"版本的源代码管理,备份变得更加容易。

集中式与分布式...的区别实际上是在分布式中,不一定有一个"权威"版本的源代码控制,尽管在实践中人们通常仍然拥有主树。

分布式源代码管理的最大优势有两个:

  • 使用分布式源代码管理时,我们在本地计算机上拥有整个源代码树。我们可以像独自一人一样进行提交,创建分支和工作,然后当我们准备好进行更改时,可以将其从计算机升级到主副本。如果我们经常"离线"工作,那么这将是一个巨大的好处。
  • 我们不必征求任何人的许可就可以成为源代码管理的分发者。如果人员A正在运行项目,但人员B和C想要进行更改并彼此共享这些更改,则使用分布式源代码控制将变得更加容易。

回答

我建议从Eric Sink查看以下内容:

http://www.ericsink.com/scm/source_control.html

拥有某种版本控制系统可能是程序员用来检查代码更改并了解谁对谁做了什么的最重要工具。即使对于单人项目,能够将当前代码与先前已知的工作版本进行比较以了解由于更改而可能出了什么问题,也是非常宝贵的。

回答

即使不分支,使用标记标记发行版也会很有用。

想象一下,我们昨天发布了一个新版本的软件,并且已经开始对下一个版本进行重大更改。用户打电话给我们,以报告昨天发布的一个严重错误。我们不能仅仅对其进行修复并从开发主干中复制所做的更改,因为所做的更改使整个事情变得不稳定。

如果我们已标记该发行版,则可以签出该发行版的工作副本并使用它来修复该错误。

然后,我们可以选择在标记处创建一个分支,然后将错误修复签入其中。这样,我们可以在继续升级中继的同时修复该发行版上的更多错误。我们还可以将这些修补程序合并到主干中,以便在下一个版本中提供它们。

回答

这里有两篇文章对理解基础非常有帮助。除了提供丰富的信息外,Sink的公司还销售一种名为Vault的出色源代码控制产品,该产品对单个用户免费(我与该公司没有任何关系)。

http://www.ericsink.com/scm/source_control.html

http://betterexplained.com/articles/a-visual-guide-to-version-control/

有关保险柜信息,请访问www.vault.com。

回答

设置Subversion的通用标准是在存储库根目录下有三个文件夹:trunk,branchs和tag。主干文件夹包含我们当前的"主"开发线。对于许多商店和情况而言,这就是他们所使用的全部……只是一个有效的代码存储库。

标签文件夹使它更进一步,并允许我们在某些时间点"检查点"代码。例如,当我们发布一个新版本时,有时甚至只是简单地进行一个新版本时,我们就将一个副本"标记"到该文件夹​​中。这只是让我们确切地知道当时的代码是什么样的。

分支文件夹包含在特殊情况下可能需要的各种分支。有时,分支是一个用于处理实验性功能的地方,这些功能可能需要很长时间才能稳定下来(因此,我们暂时还不想将其引入主行)。在其他时候,分支可能代表代码的"生产"副本,可以独立于主代码行进行编辑和部署,该主代码包含打算用于将来版本的更改。

无论如何,这只是如何设置系统的一个方面,但是我认为对此结构进行一些思考很重要。