SVN分支和工作副本

SVN分支和工作副本,svn,version-control,tortoisesvn,Svn,Version Control,Tortoisesvn,我想知道关于SVN,我有几件事是谷歌不能告诉我的 我们在工作中使用SVN和推荐的主干/分支/标记结构 我想知道的是,是否有必要将主干文件夹切换到Branchs/my branch文件夹,或者我可以在Branchs/my branch文件夹中工作并提交这些更改? 我这里指的是物理文件夹以及进行更改的正确位置 到目前为止,我们还没有真正需要创建分支,希望能够正确地创建分支: 谢谢 在这里切换不是个好主意。基本上,该命令用于重新定位项目 如果你有一个分支,那么这个分支就有它自己的生命。您的主干可能在提

我想知道关于SVN,我有几件事是谷歌不能告诉我的

我们在工作中使用SVN和推荐的主干/分支/标记结构

我想知道的是,是否有必要将主干文件夹切换到Branchs/my branch文件夹,或者我可以在Branchs/my branch文件夹中工作并提交这些更改? 我这里指的是物理文件夹以及进行更改的正确位置

到目前为止,我们还没有真正需要创建分支,希望能够正确地创建分支:


谢谢

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

如果你有一个分支,那么这个分支就有它自己的生命。您的主干可能在提交的功能方面领先,或者,它可能反过来——某个分支在某个时候会领先于您的主干。如果您在您提到的上下文中使用switch命令,您将陷入混乱,最终必须得到一个干净的签出


如果您使用的是不同的分支,您需要理解并接受每个分支都可以被视为基于另一个分支的独立主干。因此,对您正在处理的不同分支进行单独的清理签出

我认为最好的第一步是将Subversion的术语和概念与您自己的相匹配,否则我认为您会陷入困境。例如,将主干切换到分支没有意义。我怀疑你在这里的意思实际上是:切换当前包含主干代码的工作副本,使其包含分支代码

存储库存储主干和已创建的任何分支的当前状态。通常,当您希望返回到早期版本(如1.0.1版)修复bug时,您会创建一个分支,而对于2.0版,您在主干上做了更多实质性的更改,这对于1.0.1版来说风险太大

在处理项目时,可以从主干或分支签出工作副本。您所做的任何提交都将在您签出的主干或分支上结束。如果需要使用1.0.1分支,您有两个选择:

请检查此分支的新工作副本。任何提交都会推送到该分支上 切换用于主干的工作副本,使其现在跟随分支而不是主干。现在,任何提交都会被推送到正确的分支上。 您采取这两种方法中的哪一种取决于许多因素:

工作副本中是否有尚未提交的更改。如果是这样,那么最简单的事情就是签出一份新的工作副本。如果你想切换,那么你就有失去它们的风险,所以要么提交,要么创建一个补丁并把它放在一边 创建新的工作副本是否昂贵?例如,它可能是一个非常缓慢的网络,一个巨大的源代码树,或者需要花费很多时间来构建。如果是这样,那么您可能更喜欢切换 您的项目是否依赖硬编码路径?如果构建脚本假定所有内容都在c:\source中,那么这意味着您只能有一个工作副本,并且必须使用切换。
为了简单起见,我建议为分支创建一个新的工作副本。

从主干创建一个分支。在你的分支机构工作,尽可能多地做出你需要的承诺。完成后,将任何新提交从主干合并到分支,以解决任何冲突。一旦解决了所有冲突(如果有),并且您已经测试了代码,您就可以将分支合并到主干。

因此,特别是在分支文件夹Branchs/my_branch/files中的物理工作位置,我是否能够像通常那样处理主干?对您的评论,答案是肯定的。SVN并不真正关心文件夹和名称。它们只是建议,在主干或分支中没有特殊意义。它们可能真的是盒子和小提琴。你查过这本书了吗您的问题已包含在SVN手册中。我强烈建议您查看以下描述分支背后概念的文章:我完全理解分支的概念,但是我对工作副本本身感兴趣。