2012-07-13 182 views
1

我想知道一些谷歌无法告诉我有关SVN的东西。SVN分支和工作副本

我们在我们的工作中使用SVN和推荐的trunk/branches/tags结构。

我想知道,是否有必要将trunk文件夹切换到分支/我的分支文件夹,或者我可以在分支/我的分支文件夹中工作并提交这些更改? 我在这里说的物理文件夹和正确的位置进行更改。

我们不是真的需要去创建一个分支到现在为止,并希望得到它吧:)

谢谢!

+0

嗯。你看过书吗? :)你的问题在SVNBook中有介绍。我强烈建议你检查下面描述分支背后的概念的文章:http://svnbook.red-bean.com/en/1.7/svn.branchmerge.whatis.html – bahrep 2012-07-13 13:31:01

+0

我完全理解分支的概念,但是我我对自己的工作副本感兴趣。 – 2012-07-16 02:28:25

回答

0

从中继线创建分支。在您的分支中工作,尽可能多地提交您需要的提交。完成后,将任何新的提交从trunk中合并到分支,解决所有冲突。一旦所有冲突(如果有的话)都得到解决,并且您已经测试了代码,则可以将分支合并到中继。

+0

特别是在物理工作位置,在分支文件夹(分支/ my_branch /文件),我可以在此工作,因为我通常会干的? – 2012-07-13 12:00:37

+0

对你的评论的回答是肯定的。 SVN并不关心文件夹和名称。它们只是建议,在“后备箱”或“分支”中没有特别的含义。他们真的可以是“盒子”和“小提琴” – userfuser 2016-07-28 11:38:52

0

切换不是一个好主意。基本上,该命令用于重新定位项目。

如果你有一个分支,那么这个分支有它自己的生命。你的主干可能在承诺功能方面遥遥领先,或者它可能会成为其他方式 - 某些分支在某些时候会比你的主干提前。如果你在你提到的上下文中使用switch命令,你最终会陷入一片混乱,最终必须得到一个干净的结账。

如果您使用不同的分支机构,您需要了解并接受每个分支机构可以被视为单独的中继线(基于另一个分支机构)。因此,对于你正在使用的不同分支有独立的清理结账

0

我认为最好的第一步是将Subversion的命名和概念与你自己的匹配,否则我认为你会把自己束缚在节点上。例如“将中继线切换到分支”没有意义。我怀疑你的意思实际上是:“切换当前包含中继线代码的工作副本,以便它包含分支代码”

存储库存储主干和任何已创建分支的当前状态。通常情况下,如果您希望返回修复较早发行版中的错误(例如对于1.0.1版本),则在您为2.0版主干做了更多实质性更改时将创建一个分支, 1.0.1。

当你对某个项目签出无论从主干或分支工作副本。您提交的任何提交将最终在您检查出的主干或分支上。如果您需要在1.0.1分支上工作,您有两种选择:

  • 检出此分支的新工作副本。任何提交被推送到该分支上
  • 切换您正在使用的主干的工作副本,以便它现在遵循分支而不是主干。现在任何提交都会被推送到正确的分支上。

你采取将取决于许多因素,这两种方法之一:

  • 你有没有在你还没有提交工作副本的变化。如果是这样,那么最简单的事情就是检查一个新的工作副本。如果你想切换,那么你可能会失去它们,所以要么提交,要么创建一个补丁,并把它放在一边
  • 创建一个新的工作副本是否昂贵?例如,它可能是一个非常缓慢的网络,巨大的源代码树,或需要花费很多时间来构建。如果是这样,那么你可能更喜欢切换
  • 你的项目是否依赖于硬编码路径?如果您的构建脚本假定所有内容都在c:\source那么这意味着您只能有一个工作副本,并且您必须使用切换。

为简单起见,虽然我会建议为分支创建一个新的工作副本。