# same args as popen above
sub qx {
- my $self = shift;
- my $fh = $self->popen(@_);
+ my $fh = popen(@_);
if (wantarray) {
- local $/ = "\n";
my @ret = <$fh>;
close $fh; # caller should check $?
@ret;
}
}
+sub date_parse {
+ my $self = shift;
+ map {
+ substr($_, length('--max-age='), -1)
+ } $self->qx('rev-parse', map { "--since=$_" } @_);
+}
+
# check_async and cat_async may trigger the other, so ensure they're
# both completely done by using this:
sub async_wait_all ($) {
my $ret = '???';
# don't show full FS path, basename should be OK:
if ($self->{git_dir} =~ m!/([^/]+)(?:/\.git)?\z!) {
- $ret = "/path/to/$1";
+ $ret = "$1.git";
}
wantarray ? ($ret) : $ret;
}
push(@$inflight, $oid, $cb, $arg);
}
-sub async_prefetch {
- my ($self, $oid, $cb, $arg) = @_;
- if (my $inflight = $self->{inflight}) {
- # we could use MAX_INFLIGHT here w/o the halving,
- # but lets not allow one client to monopolize a git process
- if (scalar(@$inflight) < int(MAX_INFLIGHT/2)) {
- print { $self->{out} } $oid, "\n" or
- $self->fail("write error: $!");
- return push(@$inflight, $oid, $cb, $arg);
- }
- }
- undef;
-}
-
sub extract_cmt_time {
my ($bref, undef, undef, undef, $modified) = @_;