Version control 源代码管理背后的理论(和术语)

Version control 源代码管理背后的理论(和术语),version-control,Version Control,我已经尝试过在几个项目中使用源代码管理,但仍然没有真正理解它。对于这些项目,我们使用了OrtoiseSVN,只有一行修改。(没有主干、分支或其他任何分支。)如果有建议的方法来设置源代码管理系统,它们是什么?这样设置的原因和好处是什么?集中式源代码管理系统和分布式源代码管理系统的工作方式之间的根本区别是什么?将源代码管理视为源代码的一个巨大的“撤消”按钮。每次您签入时,都会添加一个可以回滚的点。即使您不使用分支/合并,这个特性本身也是非常有价值的 此外,通过拥有一个“权威”版本的源代码管理,备份变

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

将源代码管理视为源代码的一个巨大的“撤消”按钮。每次您签入时,都会添加一个可以回滚的点。即使您不使用分支/合并,这个特性本身也是非常有价值的

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

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

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

  • 使用分布式源代码管理时,整个源代码树都在本地计算机上。您可以提交、创建分支和工作,就像您独自一人一样,然后当您准备好推进更改时,您可以将它们从您的计算机升级到主副本。如果你经常“离线”工作,这将是一个巨大的好处

  • 您不必请求任何人的许可就可以成为源代码管理的分发者。如果人员A正在运行项目,但人员B和C希望进行更改,并彼此共享这些更改,那么使用分布式源代码管理将变得更加容易


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


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

    即使您没有分支,您也可能会发现使用标记来标记发布是非常有用的

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

    如果您已经为发布添加了标签,那么您可以签出它的工作副本,并使用它来修复bug


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

    这里有两篇文章非常有助于理解基础知识。除了提供信息,Sink的公司还销售一款很棒的源代码管理产品,名为Vault,对单个用户免费(我与该公司没有任何关联)


    www.Vault.com上的Vault信息。

    设置Subversion的常见标准是在存储库的根目录下有三个文件夹:主干、分支和标记。主干文件夹保存您当前的“主”开发线。对于许多商店和情况,这是他们曾经使用的全部。。。只有一个工作的代码库

    tags文件夹更进一步,允许您在特定时间点“检查”代码。例如,当您发布一个新版本,或者有时甚至只是创建一个新版本时,您会将一个副本“标记”到此文件夹中。这只允许您确切地知道代码在那个时间点上的样子

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


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

    这是一个很好的问题!为什么版主们还没有把它关闭呢?他们渴望得到比1B“如何在Java中使用X?”问题更有趣的东西