这是在 Win2k3sp2 上,使用 TortoiseSVN 1.6.5 和 SlikSVN 1.6.3。
我在一个 repo 中有一个文件夹,称之为 /a/b,我想在同一个 repo 中成为 /a/c/d。我试过只是移动文件夹并重命名它,然后提交,显然它会感到困惑,因为 .svn 文件夹认为它仍然在旧名称下,如果它确实有效,它是一个两次提交的事情 /a/ b 被删除,/a/c/d 是全新的,这是不好的,因为那样我就会丢失每个文件所附的历史记录。
我开始四处寻找并找到“relocate”,它带有一个巨大的警告并说服我不要使用它。然后是“切换”,虽然我认为“重新定位”是描述我想做的事情的更直观的方式,但似乎是合适的选择。所以我这样做了,虽然 /a/b 中只有几个文件(比如可能有 8 个文件夹,每个文件夹包含一两个文件),但花了很长时间,现在:
我的问题分为两部分:
小智 6
您的问题是使用了错误的命令;“切换”完全符合您的要求——它改变了您的工作副本“指向”的存储库位置,而无需更改存储库。(切换然后提交会产生一些结果,但以一种真正破碎的方式,这不是你的意思。你是对的;听起来很诱人的“重定位”是“切换”的一个特例,应该避免同样的原因。)
然后“更新”命令更新了工作副本以匹配当前在“新”位置的存储库中的内容 - 什么都没有!
Subversion 还没有真正的移动/重命名。颠覆安全的方法是复制然后删除。TortoiseSVN 包括一个方便的“移动”选项,它将复制和删除作为一个操作。
做你想做的最简单的方法:
1. 在 TortoiseSVN 中打开 repo-browser。
2.右键单击文件夹并将其从旧位置拖动到新位置。
3. 从上下文菜单中选择“移动”。
这也适用于您的工作副本,并且是在不丢失历史记录的情况下移动或重命名 wc 中的文件和文件夹的安全 Tortoise/Subversion 方式。