diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-31 11:47:18 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-31 12:58:16 +0100 |
commit | 33757ceaca394c2af95930775ee8ca1fd55108cf (patch) | |
tree | 94c54d2e2c8c2c48bc7d70f0a79809944c964fe3 | |
parent | f466135abc563fca56534e3796d175bd82cc2e15 (diff) |
Dgit.pm: git_for_each_ref: Provide optional $git_dir argument
-rw-r--r-- | Debian/Dgit.pm | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 32c2bc5..48aae18 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -188,12 +188,15 @@ sub git_rev_parse ($) { return cmdoutput qw(git rev-parse), "$_[0]~0"; } -sub git_for_each_ref ($$) { - my ($pattern,$func) = @_; +sub git_for_each_ref ($$;$) { + my ($pattern,$func,$gitdir) = @_; # calls $func->($objid,$objtype,$fullrefname,$reftail); # $reftail is RHS of ref after refs/[^/]+/ # breaks if $pattern matches any ref `refs/blah' where blah has no `/' my @cmd = (qw(git for-each-ref), $pattern); + if (defined $gitdir) { + @cmd = ('sh','-ec','cd "$1"; shift; exec "$@"','x', $gitdir, @cmd); + } open GFER, "-|", @cmd or die $!; debugcmd "|", @cmd; while (<GFER>) { |