SVN cat On旧版本位置

时间:2013-05-30 21:27:52

标签: svn

假设我有一个以directory1开头的文件,我将文件移至directory2中的revision 2。转储文件中的Node-copyfrom-rev1。如何根据以前可能无法确定最终工作副本的最终位置来提取文件的内容?

例如,如果我运行

svn cat -r 1 directory1/file.txt

您将无法找到该文件。你需要执行

svn cat -r 1 directory2/file.txt 

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

1 个答案:

答案 0 :(得分:7)

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

  1. 使用修订号:svn -r$rev $URL
  2. 使用固定版本号:svn $URL@$rev
  3. 将第一种方式(普通版本号)视为为您提供文件的修订版,将第二种方式(固定版本号)视为给您目录的修订号。

    例如,在修订版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
    

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

    $ svn cat -r10 $REPO/trunk/foo/bar.txt
    

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

    $ svn cat -r10 $REPO/trunk/foo/bar.txt@10
    

    这将为我提供修订版10中bar.txt的内容,因为它存在于修订版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
    ------------------------------------------------------------------------
    $
    

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

    如果我这样做:

    $ svn ls -r161076 $REPO/trunk/Tools/server_tools       
    find-required-jars.pl
    jdescribe.pl
    jenkins-bin/
    

    目录的修订版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
    $ 
    

    没用。当前版本的目录中没有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;
    

    有它!