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

5
我希望列出svn中所有文件,按最后提交日期排序。svn ls -Rv可以列出所有文件,但不接受-t开关。有人知道如何做到这一点吗?
(我已经看到了类似问题的答案,但我不知道如何将其改为适用于svn ls。)
仍未回答:按添加到SVN的日期对文件进行排序也会很有帮助。
3个回答

11

在我的Windows电脑上,下面的代码可以完成任务。

svn ls -Rv | sort

对于Unix,你很可能需要使用开关“-n”来指定数字排序顺序。


在我的Linux发行版上也像魔法一样运行良好,不需要-n开关 :) - Nagel

1

使用 svn list --xml 命令,并按照 <date>2014-08-20T12:34:46.712712Z</date> 进行排序。


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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接