我了解分支和合并的基本概念。我发现的所有解释都讨论了对整个主干进行分支以创建分支项目并对其进行处理,然后将其合并回来。是否可以对项目的一个子集进行分支?

我认为一个例子将帮助我最好地解释我想做的事情。假设我有一个包含十个文件 file0 到 file10 的应用程序。所有文件都是相互依赖的,并且为了能够测试任何一个文件,所有其他文件都需要包含在构建中。我想处理 file0,但不需要对 file1 到 file10 进行更改。我是否可以分支 file0,以便提交到 file0 的更改将更新类似 myrepos/branches/a-branch/file0 的内容,但工作副本中的所有其他文件将仅来自主干?

我想要这样做的原因是我正在开发一个包含数万个文件的巨大 j2ee 应用程序,并且似乎对整个事情进行分支将需要很长时间。另外,我将 Eclipse 与 subclipse 一起使用(我可能对此是错误的),但似乎如果我在 Eclipse 中分支一个项目,那么我将不得不设置一个新的 Eclipse 项目来指向该分支。不幸的是,由于应用程序的大小,将这个特定项目从 SVN 导入到 eclipse 需要几个小时。花这么多时间对我来说不太现实。

我想我的概念可能是错误的。也许分支整个项目根本不需要新的工作副本?

感谢您对这个问题的任何启发。

有帮助吗?

解决方案

在 Subversion 中对整个(偶数)非常大的树进行分支是 非常便宜的操作, ,它执行惰性(O(1) 时间)文件复制。

您不必更改整个工作副本才能仅处理一个已更改的文件。您可以使用 SVN开关 将工作副本中的一个文件或一个目录切换为分支上文件的签出版本。

其他提示

在颠覆,使得分支简单地使目录的层级结构的副本。因此,可以分支的子集,但只有当该子集可以通过目录的层级结构来限定。

  

我可以   分支file0这样的变化承诺   file0将更新像   myrepos /分支机构/一个分支/ file0但   在我的工作副本中的所有其他文件   将简单地从后备箱?

要回答这个问题:不,你不能分支的单个文件。不过,我觉得你想要做的反而是做一个分支而在file0在那里工作。当您更改trunk文件,您只需将其合并到分支你在哪里工作file0

在这种方式,你总是有从trunk的最新信息,请这将让你单独测试后备箱的file0变化。,然后你可以使用svn switch来移动你的“文件镜头”之间主干和分支(但要注意,Eclipse中可能会抱怨这样的恶作剧)。

SVN分支是基于懒惰复制机制,所以你可以放心地分公司您所有的项目:将需要很长时间。

由于在这个问题:“提到我如何分支在SVN单个文件?“你可以分支的一个子集,但我相信这将是与的 SVN:merginfo属性机构:它工作得更好认为属性是从项目的根集

在SVN分支是O(1)的操作。此外,由于SVN内部员工偷懒复制,您只需支付你改变什么空间处罚。

因此,如果您不能确定,为什么不继续和分支整个项目?

(如夸克所提到的,一个问题分支大项目是,如果你签出几个分支/并行行李箱,这可能需要大量的本地磁盘空间。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top