X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=Debian%2FDgit.pm;h=48aae188560ddc825351b2cd09d0d8cebc0e475d;hp=32c2bc5673cad88ac87f1e569fa2a0518a5cf443;hb=2212a3b83e5e983a6d2b65a491287fa3d6bdbbbc;hpb=0c838feda384f115a115ddd609eca9b8c6ece162 diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 32c2bc56..48aae188 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 () {