2011-09-28 46 views
0

我有一个存储库被移动,路径被重命名,然后日志被截断。所以我没有老路。当我尝试做svn切换https://new.repo/new/path svn抱怨“无法从内部替换目录”。我如何避免这种情况?SVN:从不存在的路径切换?

P.S.重新创建旧路不是一种选择。从新位置

+0

截断日志意味着什么? – Dialecticus

+0

这是否解决了这个问题:http://stackoverflow.com/q/115281/395718 – Dialecticus

回答

0

检验和复制旧的工作副本的内容在你的工作副本的新

+0

想到了。这是我想避免的保留选项。 atm与.svn/entries文件混淆。 – Daniel

2

如果它仍然是相同的回购,而这只是路径回购所更改,那么你应该传递--relocate选项为svn switch。这有帮助吗?

svn switch --relocate https://new.repo/new/path 

(警告:如果它是不一样的回购,然后使用--relocate将打破东西)

+0

1.其不同的回购。 2.移居说:“SVN:重新定位只能改变URL中的版本库部分” – Daniel

+1

没有办法切换到完全不同的回购。你的意思是它曾经是相同的回购协议,但它在新版本中有所改变?如果是这样,那么你应该首先重新定位到//new.repo/old/path,然后切换到//new.repo/new/path。如果它是完全不同的回购,那么你必须从头开始检查它。 – Dialecticus

0

问题得到解决。我创建了一个在所有.svn /条目中更改路径的脚本。一切正常。

0

嗯,已经解决,但

svn --relocate https://old.repo/old/path https://new.repo/new/path 

应该做的伎俩很好

0

我有同样的问题,并没有能够得到它与任一“开关”工作或“切换--relocate ”。正如原来的问题所述,我得到了错误“不能从内部替换目录”与前者和后者“重定位只能更改URL的存储库部分”

因为我在CentOS上,所以能够通过从我的工作目录的根目录运行以下命令,使用sed手动更新.svn/entries文件中的网址:

find . -type f -name entries -exec sed "s/old\/path/new\/path/" -i {} \; 
+0

几乎和我一样:) – Daniel