源控制背后的理论(和术语)

时间:2008-08-17 01:38:25

标签: version-control

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

5 个答案:

答案 0 :(得分:8)

将源代码控制视为源代码的巨大“撤消”按钮。每次办理登机手续时,您都会添加一个可以回滚的点。即使您不使用分支/合并,单独使用此功能也非常有价值。

此外,通过拥有一个“权威”版本的源代码控制,备份变得更加容易。

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

分布式源代码控制的一大优势是双重的:

  1. 使用分布式源代码控制时,您的本地计算机上有完整的源代码树。您可以提交,创建分支,并且可以像单独使用一样工作,然后当您准备好推送更改时,可以将它们从计算机升级到主副本。如果你正在“离线”工作很多,这可能是一个巨大的好处。

  2. 您无需征得任何人的许可即可成为源代码管理的分销商。如果人员A正在运行项目,但是人员B和C想要进行更改,并且彼此共享这些更改,则使用分布式源代码控制会变得更加容易。

答案 1 :(得分:6)

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

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

拥有某种版本控制系统可能是程序员审查代码更改和了解谁对谁做了什么最重要的工具。即使对于单人项目,能够将当前代码与先前已知的工作版本区分开来以了解由于更改而可能出错的内容也是非常宝贵的。

答案 2 :(得分:3)

以下是两篇对理解基础知识非常有帮助的文章。除了提供信息外,Sink的公司还销售一款名为Vault的优秀源代码控制产品,对单个用户免费(我与该公司无任何关联)。

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

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

www.vault.com上的保险柜信息。

答案 3 :(得分:1)

即使您没有分支,您也会发现使用标记标记版本很有用。

想象一下,您昨天推出了新版本的软件,并开始对下一版本进行重大更改。用户呼叫您在昨天的发布中报告严重错误。您不能只修复它并复制开发主干的更改,因为您刚刚做出的更改使整个事情变得不稳定。

如果您已标记了该版本,则可以查看该版本的工作副本并使用它来修复该错误。

然后,您可以选择在标记处创建分支并检查错误修复。这样,您可以在继续升级主干时修复该版本上的更多错误。您还可以将这些修复程序合并到主干中,以便它们出现在下一个版本中。

答案 4 :(得分:1)

设置Subversion的通用标准是在存储库的根目录下有三个文件夹:trunk,branches和tags。 trunk文件夹保存您当前的“主要”开发线。对于许多商店和情况,这是他们所使用的......只是一个工作的代码存储库。

tags文件夹更进一步,允许您在某些时间点“检查”您的代码。例如,当您发布新版本时,或者有时即使您只是制作新版本,您也可以将一个副本“标记”到此文件夹中。这只是让您准确了解您的代码在那个时间点的样子。

branches文件夹包含在特殊情况下可能需要的不同类型的分支。有时,分支是处理实验性功能或功能的地方,可能需要很长时间才能稳定(因此您不想将它们引入主线)。其他时候,分支可能代表代码的“生产”副本,可以独立于主代码行进行编辑和部署,其中包含用于将来版本的更改。

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