如果我将目录拖到同一个存储库中的另一个位置,将其拖到Tortoise中的新位置,我就不能在移动之前签出修订,因为这些旧版本的URL不是有效了。
如何移动目录和仍然可以在移动前访问修订版?
示例: 如果我搬家
trunk/folder1/source
到
trunk/folder2/source
然后我可以在folder2下看到“source”文件夹,我可以查看头部修订版,这意味着产生移动的修订版。
但是,如果我尝试签出在移动之前提交的旧版本,我会收到错误,指出该网址不存在。 我想这是因为旧修订版的网址仍指向旧路径。
但是必须有办法解决这个问题,否则如果您放弃对较旧版本的访问,那么移动就没有意义。
答案 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。