summaryrefslogtreecommitdiff
path: root/Debian
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2015-05-31 11:47:18 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2015-05-31 12:58:16 +0100
commit33757ceaca394c2af95930775ee8ca1fd55108cf (patch)
tree94c54d2e2c8c2c48bc7d70f0a79809944c964fe3 /Debian
parentf466135abc563fca56534e3796d175bd82cc2e15 (diff)
Dgit.pm: git_for_each_ref: Provide optional $git_dir argument
Diffstat (limited to 'Debian')
-rw-r--r--Debian/Dgit.pm7
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>) {