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

请先 登录 后评论

3 个回答

jeremcc

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

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

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

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

请先 登录 后评论
Brad Wilson

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

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

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

分布式源代码控制的最大优势有两个:

  1. 当您使用分布式源代码控制时,您在本地机器上拥有整个源代码树。您可以提交、创建分支并像独自一人一样工作,然后当您准备好推送更改时,您可以将它们从您的机器提升到主副本。如果您经常“离线”工作,这将是一个巨大的好处。

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

请先 登录 后评论
Matt Miller

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

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

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

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

请先 登录 后评论