如何按日期对SVN LS -R输出进行排序

时间:2014-08-21 12:08:18

标签: sorting date svn ls

我想列出我的svn中的所有文件,按上次提交日期排序。 svn ls -Rv列出了所有文件,但它不接受-t切换。有谁知道怎么做?

(我已经看到了对svn status的{​​{3}}的回答,但对我来说,如何将其更改为与svn ls一起使用并不明显。)

仍然无法解决:能够按照添加到SVN的日期对文件进行排序也很有帮助。

3 个答案:

答案 0 :(得分:9)

在我的Windoz框中,下面的工作

svn ls -Rv | sort

对于Unix,您很可能必须使用开关“-n”

指定数字排序顺序

答案 1 :(得分:1)

使用svn list --xml并按<date>2014-08-20T12:34:46.712712Z</date>排序。

答案 2 :(得分:0)

今天遇到了这个挑战。其他选择对我没用。我想出了一个简短的Perl脚本来完成这项工作。也许有可能将其混合成一个单行,但我并不觉得这样。

将代码放入svn-sort.pl中。命令行看起来像这样:

svn ls $url | perl svn-sort.pl | sort

我希望这会有所帮助。

#!/usr/bin/env perl

use strict;
use warnings;


# Main entry point.
sub main {
        my $input;

        # Read into string instead of array.
        {
                local $/ = undef;
                $input = <>;
        }


        my $count = 0;
        my $limit = 0;

        my @matches;
        while ($input =~ m|<entry.+?<name>([^<]+?)</name>.*?<date>([^<]+?)</date>.*?</entry>|gs) {
                push @matches, [$1, $2];
        }

        foreach my $m (@matches) {
                print "$m->[1]\t$m->[0]\n";

                if ($limit > 0 && ++$count > $limit) {
                        last;
                }
        }
}


# Go.
&main(@ARGV);