2

我有带有分支、标签和主干的 svn repo 现在当我创建新分支时,是否必须使用 svn 切换到该分支?我不应该直接在那个分支目录上工作吗?

对不起,如果这听起来很愚蠢。

4

3 回答 3

5

好吧,SVN Switch 功能并不是那么无用。

有时您可能会在一个版本的多个分支中拥有庞大的代码库。

考虑一个场景:

您有一个名为Release X的分支,出于某种目的,您从中创建了另一个分支Release X.1

如果开发人员现在想使用 X.1 Branch,他有两种选择:

  1. 检查整个分支和完整的代码库(耗时?)
  2. SVN 打开Release X工作副本以指向Release X.1(考虑到没有巨大的变化) - 像魅力一样工作!
  3. 完成工作后,无缝切换回上一个分支......

这是其中一种情况......当您重新定位存储库时会发生什么?整个 URL 发生变化。切换是智能的而不是结帐。

我相信我已经表达了我的观点:)

于 2012-10-10T07:45:14.617 回答
3

是否必须使用 svn switch 到该分支?

就 RFC 而言,不是“必须”,甚至不是“拥有”。您可以切换 WC,但“切换或不切换”是繁重的工作流程和风格以及情况依赖

一些干燥的著名理论

  • 每个 WC 都有一个(目前)Repository Root URL属性
  • 我们不能在 WC(没有技巧)中使用RepoRoot URL以下的对象进行操作
  • 虽然标签和分支是存储库中的廉价副本,但它们在工作副本中并不便宜(通常情况下)并且浪费与“原件”相同的空间
  • 您可以根据自己的喜好选择存储库中的任何节点作为工作副本的根
  • 您可以为存储库的不同部分使用任意数量的工作副本 (1+)

以上所有导致的事实是:

  • 您可以一直使用一个 WC(更少的空间、更多的流量和更新时间在切换时),植根于存储库树深处的某个节点,并根据需要将此 WC切换到其他节点
  • 您可以为每个不相关的节点使用一个 WC(更多空间,更少流量 - 无需切换,切换后无需同步 WC)并更改 WC
  • 您可以(在某些情况下)从根目录获取整个存储库的 WC(在标签/分支端频繁更改的情况下,最大的空间和流量使用,WC 中无用的未使用部分)并在单个 WC-tree 上导航

如您所见,switch 仅在 1/3 的情况下是必须的

于 2012-10-10T13:48:08.103 回答
1

假设你的回购看起来有点像这样:

.
├── branches/
│   ├── branch1/
│   │   └── src/
│   └── branch2/
│       └── src/
└── trunk/
    └── src/

如果您已经检查了整个 repo,那么该分支将像您所说的那样显示为另一个子目录。

然而,通常的工作方式是检查主干,然后 svn 切换到分支并 svn 切换回来。这样您就不必检查太多数据,您的 ide 总是查看同一个目录,您不会感到困惑并意外编辑错误的分支。

就我个人而言,在我必须使用分支的地方,我检查每个分支以在我的工作区目录中并排分隔目录。但大多数情况下我避免分支。

于 2012-10-10T14:01:06.380 回答