一般如何使用修订控制系统

tbo*_*der 2 svn git version-control revision

我打算创建比以前的项目更大的项目,所以我认为使用像svn或git这样的修订控制系统来跟踪所有更改,在代码中尝试一些新的功能会更好没有风险等等.

现在(除了我是否应该使用svn或git的问题),我问自己"如何使用"这样的系统.

到现在为止,我发现类似的词汇树干,标签分支(这个词合并经常出现在这方面).但我不确定如何真正与他们合作.标签似乎是发布版本(如果不是请纠正我),但我不知道在主干分支中真正属于什么; 何时使用什么等..

在我的研究过程中,我还建议您通常应该为新项目创建一个包含子文件夹分支,标签和主干的文件夹结构.你还推荐这个吗?或者我应该以不同的方式处理项目的源代码?

有人可以试着向我解释一下吗?

ang*_*son 7

版本控制系统的主题可能有点太大,无法作为Stack Overflow等问答网站的一部分进行教学.你当然欢迎提出有关他们的问题,但"任何人都可以告诉我所有我需要知道的事情"可能不是正确的地方.

如果您对分布式版本控制系统感兴趣,既然您已经提到了git,那么您应该看看hginit.com.虽然该网站描述了Mercurial,但大多数(如果不是全部)也适用于git.

至于创建这些文件夹的建议,这完全取决于您决定使用的版本控制系统.

Subversion使用文件夹级"副本"来创建分支.可以把它想象成同时在磁盘上拥有多个项目副本,并且Subversion允许您将更改从一个文件夹合并到另一个文件夹,并跟踪您合并的内容,时间和方向.

对于DVCS',这是不必要的,因为分支是以不同的方式完成的,因此您不需要这些目录.

您列出的词汇可以总结如下(请注意,因为我使用Mercurial,我可能会因为他们在该系统中的使用而着色):

  • Trunk - 您的主要开发线.如果您没有源代码管理,那么这就是您一直在工作的地方.
  • 标签 - 标签是一种轻量级标记,可以将其视为一个便条,您可以将其粘贴到项目的某个版本,以便以后可以回答"嗯,我想知道发布时所有源文件的样子版本1.0"
  • 分支 - 分支是项目的并行Universe副本,可能包含更改.例如,当您发布1.0版本时,您可能会创建该标记,但您也可能创建一个分支.然后,在trunk上,你将开始向2.0或1.1版本开始工作,如果你需要发布1.0的修补程序来修复bug,那么你将在1.0分支上进行修复.
  • 合并 - 当您有多个分支时,您可以要求您的版本控制系统通过合并它们来帮助您将一个分支上的更改完成另一个分支(更改或分支,这在系统与系统之间有所不同.)
  • 变更集/修订版 - 几乎是同义词,表示您同时提交的一组更改.可能是修复特定错误或添加特定功能.变更集可以包含对许多文件的更改,甚至包含新文件或删除不再需要的文件.

对修订控制维基百科的文章也有相当多有用的信息.

水银词汇表还列出了相当数量的术语及其水银的使用,以及多数的信息是许多版本控制系统实现.


无论如何,这是一个典型的(无论如何)我做项目的方式.

  • 你创建了初始项目存储库,只有主分支(Subversion中的trunk,默认为Mercurial,master?我想在git中)
  • 然后,您开始处理您的项目,并定期提交,您构建了一个很好的变更集列表
  • 在某些时候,您已准备好发布1.0版,因此您创建了该标记,并在该点创建了一个名为"1.0"的分支,然后您发布了您的软件
  • 然后,继续工作,取决于版本1.1或2.0
  • 在某些时候,您有一个客户在1.0中找到的错误列表
  • 你修复了trunk/default/master中的那些bug,以便下一个大版本至少有那些错误修正,然后你将这些修改合并回1.0
  • 当1.0中的所有已知错误都已修复时,您将其标记为1.01,并释放它
  • 然后回到2.0工作
  • 当2.0准备发布时,您再次标记和分支等.

这只是一种方法,有很多.如果你问他们,人们会告诉你他们的首选方式,我不会说我的方式是正确的.


zer*_*kms 5

您可以开始查看http://www.infoq.com/articles/agile-version-controlhttp://nvie.com/posts/a-successful-git-branching-model/

也是trunk-tag-branchsvn中使用的一个过时的架构.DSCM(mercurial,git)对分支和标记具有本机支持,因此您无需显式创建这些目录.