使用TortoiseSVN移动目录的正确方法是什么?

时间:2009-08-03 06:55:34

标签: svn tortoisesvn

如果我将目录拖到同一个存储库中的另一个位置,将其拖到Tortoise中的新位置,我就不能在移动之前签出修订,因为这些旧版本的URL不是有效了。

如何移动目录仍然可以在移动前访问修订版?


示例: 如果我搬家

trunk/folder1/source

trunk/folder2/source

然后我可以在folder2下看到“source”文件夹,我可以查看头部修订版,这意味着产生移动的修订版。

但是,如果我尝试签出在移动之前提交的旧版本,我会收到错误,指出该网址不存在。 我想这是因为旧修订版的网址仍指向旧路径。

但是必须有办法解决这个问题,否则如果您放弃对较旧版本的访问,那么移动就没有意义。

6 个答案:

答案 0 :(得分:4)

您可以通过多种方式移动目录。

最简单的方法是右键拖动目录,然后在放弃时单击“SVN在此处移动版本化文件”。

您可以使用重命名功能将文件从“blah.js”重命名为“mydirectory / blah.js”。

最后,您可以在提交之前使用提交窗口并在其中拖动项目。当文件设置为移动时,复选框旁边会出现一个小红点。

答案 1 :(得分:3)

之前答案中没有提到的是名为“peg revision”的SVN功能。如果要引用不再存在的目录结构,请使用peg修订。来自SVN书:

  

在1.1版中,Subversion介绍了   一种让你准确告诉它的方法   你的意思是主街。它被称为   peg修订版,并提供给   颠覆的唯一目的   确定一条独特的历史线。   因为最多只有一个版本化对象   可以在任何给定的路径上占据一条路   时间 - 或者更确切地说,任何一个   修订 - 路径和路径的组合   只需要一个挂钩修订版   引用一个特定的行   历史。指定了Peg修订版   到Subversion命令行客户端   在语法中使用,因为所谓的   语法包括附加“at符号”   (@)和peg修订结束   修订的路径   相关联。

例如为: http://svn.example.com/skinproj@148

有关详细信息,请参阅SVN手册:http://svnbook.red-bean.com/en/1.5/svn.advanced.pegrevs.html

答案 2 :(得分:2)

不是直接拖放,而是使用 right 鼠标按钮进行拖放,当您发布时,在弹出的上下文菜单中选择“SVN Move versioned files这里”。

答案 3 :(得分:1)

打开存储库浏览器,然后使用鼠标右键拖放(只在第一次使用时感觉很奇怪),或者使用“复制到...”菜单项。

这根本不会影响您的工作副本,然后您可以更新您的WC以获取新目录,并从您的WC中删除+提交旧目录。

答案 4 :(得分:0)

问题是:我在查看存储库浏览器中头版本的树时尝试检出旧版本。在那个视图中,我试图检查旧版本的trunk / folder2 / source,由于移动而在旧版本中不存在。

<强>解决方案:

  • 检查日志以查找所需的修订
  • 切换整个存储库浏览器 到那个修订
  • 现在您可以看到所需的文件夹 在它的原始路径,它在哪里 回到那个版本
  • 查看此文件夹

感谢大家的提示,这使我走向了正确的方向。

答案 5 :(得分:-1)

我不确定我是否正确理解你的问题。听起来有点像这样:

假设你有文件夹

/svn/trunk/folder1

并将其移至

/svn/trunk/folder2

然后您无法使用此网址访问folder1:

/svn/trunk/folder2

你必须使用

/svn/trunk/

根据修订版,您可以看到folder1或folder2。