在SVN中移动文件夹

这是在Win2k3sp2上,使用TortoiseSVN 1.6.5和SlikSVN 1.6.3。

我在回购中有一个文件夹,把它叫做/ a / b,我想在同一个回购中成为/ a / c / d。 我已经尝试过移动文件夹并重命名,然后提交,显然它感到困惑,因为.svn文件夹认为它仍然是旧的名称,如果它能工作,这是一个双提交的事情/ a / b被删除,/ a / c / d是全新的,这是不好的,因为那样我就失去了附加在每个文件上的历史logging。

我开始捅了一跤,发现“搬迁”,带来了巨大的警告,并说服我不要使用它。 然后是“切换”,尽pipe我认为“重新定位”是描述我想要做的更直观的方式,但似乎是合适的select。 所以我这样做了,花了很长时间,即使在/ a / b中只有几个文件(如可能是8个文件夹,每个文件包含一个或两个文件),现在:

  1. / a / b仍然存在
  2. / a / b中的一半文件夹已经消失
  3. 当我尝试查看它们时,/ a / b中的其余文件夹给我一个错误:“/ a / b / e不可访问,访问被拒绝。
  4. / a / c / b(不是我曾经告诉过的/ a / c / d),但是保持空白
  5. 我尝试了一个更新,现在有些文件夹回到/ a / b,但不是全部

那么我的问题分两部分:

  1. 我如何清理这个?
  2. 我所描述的移动文件夹的正确方法是什么?

你的问题是使用了错误的命令; “开关”做了你想要的东西的确切补充 – 它改变了工作副本“指向”的存储库位置,而不需要改变存储库。 (开关然后提交会产生一些结果,但在一个真正的破碎的方式,这不是你的意思,你是对的;诱人的“重新定位”是一个特殊情况的“开关”,应该避免的相同的原因。)
“更新”命令然后更新工作副本,以匹配目前在“新”位置的存储库中的内容 – 什么都没有!

Subversion没有真正的移动/重命名。 颠覆 – 安全的方法是复制然后删除。 TortoiseSVN包括一个方便的“移动”选项,它可以作为一个操作进行复制和删除。

最简单的方法来做你想要的:
1.在TortoiseSVN中打开回购浏览器。
2. 右键单击并将文件夹从旧位置拖到新位置。
3.从上下文菜单中select“移动”。

这也适用于你的工作副本,并且是安全的乌龟/颠覆方式来移动或重命名文件和文件夹在WC而不会失去历史。

回答你的第二点,这里是我如何用Tortoise-SVN移动文件夹:

  • 右键单击Windows资源pipe理器中的文件夹,然后select“Tortoise SVN”,然后select“Repo-browser”。
  • 在回购浏览器中,让你正在寻找你想要移动的文件夹。
  • 点击文件夹(或文件!)移动并将其拖动到您想要的左侧窗格中
  • 单击确定closures回购浏览器
  • 右键单击您的文件夹并点击“更新”。

当你更新时,Tortoise SVN将删除它所在的文件夹,并在你移动它的地方重新创build它。

要正确移动文件,请使用移动命令 。

编辑:
注意,move,mv,rename,ren是同一个命令的别名。 它可以在TortoiseSVN下find“TortoiseSVN” – >“重命名…”, 见这里

我有一个类似的问题。 但在我的情况下,目录/ a / b和/ a / c分别被检查。

此解决scheme与稀疏(部分)结帐已解决问题。