提交到 SVN 分支也会影响主干

Hal*_*hat 5 svn tortoisesvn branch

我有一个问题,每当我使用 TortoiseSVN 从主干创建一个分支时,在我进行更新后,对该分支的所有提交也会显示在我的主干文件夹中,反之亦然。

我要做的是:

  1. 使用 TortoiseSVN 将 /trunk 分支到 /branches/foo。在对话框中选择“将工作副本切换到新分支/标签”选项。
  2. 运行“更新”以将 /branches/foo 文件夹放入我的工作副本中,该副本位于项目目录中。
  3. 对 /branches/foo 中的文件进行更改
  4. 提交此更改
  5. 运行“更新” - 这会导致我的工作副本的 /trunk 文件夹中的同一个文件也随着分支中所做的更改而更新

如何断开此链接 - 或创建一个分支而不将其与主干 1:1 链接?

我找到的唯一解决方案是复制整个主干文件夹并再次添加每个文件;虽然这不应该是必要的。

Ben*_*Ben 5

从您对另一个答案的评论来看,您似乎在低效地使用 SVN。我认为这是你问题的根源。

听起来您的工作副本是项目根目录,在您的计算机上您可以看到每个分支、每个标签以及主干。当您进行更新时,您会在根项目中进行更新,并获取每个分支中的所有更改。

这不是 SVN 的用途。

预期用途是检查每个感兴趣的分支的一份工作副本。如果您正在研究主干,只需查看主干。如果您正在处理功能分支,只需查看该分支。您可以为多个任务拥有多个工作副本。

你现在的做法,如果你的项目变得非常大,有大量的分支和标签,当你检出顶级文件夹时,会占用千兆字节的空间,每次操作都会花费很长时间去完成。

为什么这与您的问题有关?这是我假设发生的事情:

  1. 你分支的树干
  2. 您选择自动将工作副本切换到分支。这仅影响您的工作副本中的一个文件夹。现在您的“主干”文件夹根本不是主干,它实际上指向您的分支。这显然会在以后混淆。
  3. 您在“分支”文件夹中进行了更改并提交了它。
  4. 您在顶层做了一个“更新”。
  5. 您会看到“branch”文件夹中的更改现在也位于“trunk”文件夹中。

现在,由于您选择切换主干文件夹,因此您机器上的“主干”并未指向 SVN 存储库中的实际主干文件夹。它指向分支。这就是为什么您会在机器上看到“主干”发生变化的原因。如果您进入存储库浏览器,我希望您不会在主干中看到您的分支更改。如果您将中继文件夹“切换”回中继,您应该会看到您的更改从机器上的中继消失。

为避免将来发生这种情况,请执行以下任一操作:

  • 将您的工作流程更改为推荐的工作副本方法,这些副本指向单个主干或分支而不是整个项目。如果这样做,选择自动“切换工作副本”选项很有用,因为您可以从主干开始,将其分支,然后使用相同的工作副本继续在分支上工作。使用这种方法,您通常将整个工作副本“切换”到新位置,而不是工作副本中的单个文件夹,以避免混淆。或者
  • 继续做你正在做的事情,检查整个项目。永远不要在您的工作副本中切换任何内容,因为如果您这样做,文件夹将不会指向您期望的位置。在这种方法中,“切换”只会造成混乱。从主干分支后,您必须更新以查看分支,然后找到该分支并在那里开始工作。希望您的项目永远不会大到足以吃掉您的整个硬盘驱动器,或者如果它有这样做的威胁,请开始使用稀疏结帐。