svn副本-r[修订号][网址][路径]

svn副本-r[修订号][网址][路径],svn,Svn,所以,我以前做过这件事,我只是不知道这次是什么坏了 我正在尝试从SVN还原一个文件。我找到了被删除的版本(或者至少是最后存在的版本)。我使用svn list-r进行了验证 这是我的命令: svn copy -r 925 url/to/repo/foldername htdocs/foldername 我一直收到一个错误: svn: '/!svn/bc/973/.../htdocs/templates' path not found 从我的理解来看,这意味着它的版本是973(即HEAD),而不

所以,我以前做过这件事,我只是不知道这次是什么坏了

我正在尝试从SVN还原一个文件。我找到了被删除的版本(或者至少是最后存在的版本)。我使用svn list-r进行了验证

这是我的命令:

svn copy -r 925 url/to/repo/foldername htdocs/foldername
我一直收到一个错误:

svn: '/!svn/bc/973/.../htdocs/templates' path not found
从我的理解来看,这意味着它的版本是973(即HEAD),而不是925


我在这里遗漏了什么?

我想你想要的是:

svn copy url/to/repo/foldername@925 htdocs/foldername
从svn帮助复制:

usage: copy SRC[@REV]... DST


使用
-r REV而不使用@REV
表示“当前文件的祖先(修订版)”,而
@REV
而不使用
-r REV
表示“修订版文件”。这种语义上的差异是显著的,因为svn跟踪副本(并重命名)。

Perfect-就是这样。这不仅是正确的答案,而且非常及时。谢谢如果您能解释为什么使用
-r XYZ
而不是
url@XYZ
(也许这是svn的错误?。@RichardHansen:我认为唯一的原因是“因为它就是这样运作的。”我认为svn项目在这些方面已经朝着更宽容的方向发展,事实上,最新版本对-c和-r等更宽容。。。不过,我不知道他们是否做出了特殊的改变。对于“为什么?”的官方答案,我想你应该问问Subversion开发团队。我找到了一个解释:。短版本:使用
-r REV
而不使用
@REV
表示“当前文件的祖先(revision REV)”,而使用
@REV
而不使用
-r REV
表示“修订时的文件”。由于svn跟踪副本(并重命名),这种语义差异非常显著。其他svn命令(如
svnls
)也存在同样的问题。