SVN cat On旧版本位置

use*_*282 4 svn

比方说,我有一个启动的文件directory1,我的文件移动到directory2revision 2.该Node-copyfrom-rev转储文件1.如何仅基于知道文件的内容而不确定它最终会在最新的工作副本中的位置来提取文件的内容?

例如,如果我跑

svn cat -r 1 directory1/file.txt,

你将无法找到该文件.你需要表演

svn cat -r 1 directory2/file.txt 
Run Code Online (Sandbox Code Playgroud)

这需要知道工作副本中的文件最后存在于directory2中.

Dav*_* W. 8

指定修订有两种不同的方法:

  1. 使用修订号: svn -r$rev $URL
  2. 使用固定修订号:svn $URL@$rev.

将第一种方式(普通修订号)视为给出文件的修订版,将第二种方式(固定修订版号)视为给出目录的修订号.

例如,在修订版10中,我这样做了:

$ svn co $REPO/trunk/foo
A foo/foo.txt
A foo/bar.txt
$ cd foo
$ svn delete bar.txt
$ svn commit -m"Removed bar.txt in revision 10"
committed revision 11
Run Code Online (Sandbox Code Playgroud)

现在,它是修订版20,我意识到我需要看看它是什么bar.txt样的.如果我这样做:

$ svn cat -r10 $REPO/trunk/foo/bar.txt
Run Code Online (Sandbox Code Playgroud)

我会收到一个错误,因为我的存储库中不再有一个元素/trunk/foo/bar.txt.我需要做的是回到修订版10中的存储库结构.我可以通过修订版10固定到URL来实现:

$ svn cat -r10 $REPO/trunk/foo/bar.txt@10
Run Code Online (Sandbox Code Playgroud)

这将为我bar.txt提供修订版10 的内容,因为它存在于修订版10的存储库中.


真实生活的例子

我们来看看我的日志:

$ svn log -v -r161077 $REPO/trunk/Tools/server_tools/
------------------------------------------------------------------------
r161077 | dweintraub | 2013-05-23 17:02:03 -0400 (Thu, 23 May 2013) | 1 line
Changed paths:
   D /trunk/Tools/server_tools/jdescribe.pl

Deleting -- in wrong repository
------------------------------------------------------------------------
$
Run Code Online (Sandbox Code Playgroud)

您可以看到jdescribe.pl我的存储库的修订版161077中删除了该文件.因此,如果我想要它,我需要查看修订版161076:

如果我这样做:

$ svn ls -r161076 $REPO/trunk/Tools/server_tools       
find-required-jars.pl
jdescribe.pl
jenkins-bin/
Run Code Online (Sandbox Code Playgroud)

它位于目录的修订版161076中:

让我们连接起来jdescribe.pl:

$ svn cat -r161076 $REPO/trunk/Tools/server_tools/jdescribe.pl
svn: warning: W160013: '/svn/TravelClickPD/!svn/rvr/161264/trunk/Tools/server_tools/jdescribe.pl' path not found
svn: E200009: Could not cat all targets because some targets don't exist
svn: E200009: Illegal target for the requested operation
$ 
Run Code Online (Sandbox Code Playgroud)

没工作.jdescribe.pl目录的当前版本中没有.

让我们添加固定版本:

$ svn cat -r161076 $REPO/trunk/Tools/server_tools/jdescribe.pl@161076 | head 
#! /usr/bin/env perl
# description.pl

use 5.12.0;
use warnings;

use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use Pod::Usage;
use Getopt::Long;
Run Code Online (Sandbox Code Playgroud)

它就是!