【发布时间】:2014-10-15 01:36:53
【问题描述】:
我想列出我的 svn 中的所有文件,按上次提交的日期排序。 svn ls -Rv 列出所有文件,但不接受 -t 开关。有谁知道怎么做?
(我已经看到a similar question 的svn status 的答案,但我不清楚如何将其更改为与svn ls 一起使用。)
仍未回答:如果能够按添加到 SVN 的日期对文件进行排序,也会很有帮助。
【问题讨论】:
我想列出我的 svn 中的所有文件,按上次提交的日期排序。 svn ls -Rv 列出所有文件,但不接受 -t 开关。有谁知道怎么做?
(我已经看到a similar question 的svn status 的答案,但我不清楚如何将其更改为与svn ls 一起使用。)
仍未回答:如果能够按添加到 SVN 的日期对文件进行排序,也会很有帮助。
【问题讨论】:
在我的 Windoz 盒子上,下面的工作就完成了
svn ls -Rv | sort
对于 Unix,您很可能必须使用开关“-n”指定数字排序顺序
【讨论】:
-n 开关 :)
使用svn list --xml 并按<date>2014-08-20T12:34:46.712712Z</date> 排序。
【讨论】:
今天遇到了这个挑战。其他选项对我不起作用。我想出了一个简短的 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);
【讨论】: