我打算创建比之前的项目更大的项目,所以我认为使用像svn或git这样的修订控制系统跟踪所有更改会很好,稍微用新的实验代码中没有风险的功能等等。
现在(除了我是否应该使用svn或git这个问题),我一般都会问自己“如何使用”这样的系统。
到目前为止,我发现词汇如 trunk ,标签和分支(单词合并经常出现在那种情况下)。但我不确定如何真正与他们合作。 标签似乎是发布版本(如果不是请纠正我),但我不知道 trunk 或分支中真正属于什么;何时使用什么等..
在我的研究过程中,我还建议您通常应该为新项目创建一个包含子文件夹分支,标签和主干的文件夹结构。你还推荐这个吗?或者我应该以不同的方式处理项目的源代码?
有人可以试着向我解释一下吗?
答案 0 :(得分:7)
版本控制系统的主题可能有点太大,无法作为Stack Overflow等Q& A网站的一部分进行教学。你当然欢迎提出有关他们的问题,但“任何人都可以告诉我所有我需要知道的事情”可能不是正确的地方。
如果您对分布式版本控制系统感兴趣,既然您已经提到了git,那么您应该看看hginit.com。虽然该网站描述了Mercurial,但大多数(如果不是全部)也适用于git。
关于创建这些文件夹的建议,完全取决于您决定使用的版本控制系统。
Subversion使用文件夹级“副本”来创建分支。可以认为它同时在磁盘上有多个项目副本,Subversion允许您将更改从一个文件夹合并到另一个文件夹,并跟踪合并的内容,时间和方向。
对于DVCS',这是没有必要的,因为分支是以不同的方式完成的,因此你不需要那些目录。
您列出的词汇可以总结如下(请注意,因为我使用Mercurial,我可能会因为在该系统中的使用而着色):
Wikipedia article on Revision control也有很多有用的信息。
Mercurial glossary还列出了相当数量的术语及其在Mercurial中的用法,其中大部分信息适用于许多版本控制系统。
无论如何,这是一个典型的(无论如何)我做项目的方式。
这只是一种方法,有很多。如果你问他们,人们会告诉你他们的首选方式,我不会说我的方式是正确的。
答案 1 :(得分:5)
您可以开始检查http://www.infoq.com/articles/agile-version-control和http://nvie.com/posts/a-successful-git-branching-model/
同样trunk-tag-branch
是一个过时的架构,在svn中使用。 DSCM(mercurial,git)对分支和标记具有本机支持,因此您无需显式创建这些目录。
答案 2 :(得分:2)
在Lasse V. Karlsen answer上展开一点:
关于学习使用版本控制,您可能应该查看Stackoverflow为您找到的“相关问题”。
在我看来来自GitHub的Tom Preston-Werner的The Git Parable很好地教导了如何以及为什么应该使用(分布式)版本控制系统(描述如何创建诸如Git 之类的DVCS)。
关于分支模型:如果您使用的版本控制系统支持轻量级分支,并且它可以快速合并分支,您通常使用两种分支在典型的工作流程中:
HTH
答案 3 :(得分:1)
Subversion Red Bean一书对该主题进行了很好的讨论。
Pragmatic Version Control也是一本好书。