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

标签 svn tortoisesvn branch

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

我要做的是:

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

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

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

    最佳答案

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

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

    这不是 SVN 的用途。

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

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

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

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

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

    为避免将来发生这种情况,请执行以下任一操作:
  • 将您的工作流程更改为推荐的工作副本方法,这些副本指向单个主干或分支而不是整个项目。如果这样做,选择自动“切换工作副本”选项很有用,因为您可以从主干开始,将其分支,然后使用相同的工作副本继续在分支上工作。使用这种方法,您通常将整个工作副本“切换”到新位置,而不是工作副本中的单个文件夹,以避免混淆。
  • 继续做你正在做的事情,检查整个项目。永远不要在您的工作副本中切换任何内容,因为如果您这样做,文件夹将不会指向您期望的位置。在这种方法中,“切换”只会造成困惑。从主干分支后,您必须更新以查看分支,然后找到该分支并在那里开始工作。希望您的项目永远不会大到足以吃掉您的整个硬盘驱动器,或者如果它有这样做的威胁,请开始使用稀疏结帐。
  • 关于svn - 提交到 SVN 分支也会影响主干,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380267/

    相关文章:

    SVN更新: 'skipped' message

    svn - 减小 .svn 文件夹的大小

    eclipse - 访问 SVN 存储库时出错 : URI doesnot contain the name of the repository

    svn分支合并树冲突问题(使用乌龟)

    git - 我可以在 Git 中删除分支后恢复它吗?

    git - 如何更改我 fork 的 GitHub 项目?

    svn - 将 Mercurial 存储库镜像到 Subversion?

    svn - 重新整合工作流程

    svn - 如何获取评论中不包含 Jira bug key 的所有 SVN 提交?

    mercurial - 如何比较 2 个 Mercurial 分支之间的变更集集?