diff options
Diffstat (limited to 'Debian/Dgit.pm')
-rw-r--r-- | Debian/Dgit.pm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index aef0112..3d97848 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -58,6 +58,7 @@ BEGIN { $debugprefix *debuglevel *DEBUG shellquote printcmd messagequote $negate_harmful_gitattrs + git_slurp_config_src workarea_setup); # implicitly uses $main::us %EXPORT_TAGS = ( policyflags => [qw(NOFFCHECK FRESHREPO NOCOMMITCHECK)] ); @@ -417,6 +418,30 @@ sub is_fast_fwd ($$) { } } +sub git_slurp_config_src ($) { + my ($src) = @_; + # returns $r such that $r->{KEY}[] = VALUE + my @cmd = (qw(git config -z --get-regexp), "--$src", qw(.*)); + debugcmd "|",@cmd; + + local ($debuglevel) = $debuglevel-2; + local $/="\0"; + + my $r = { }; + open GITS, "-|", @cmd or die $!; + while (<GITS>) { + chomp or die; + printdebug "=> ", (messagequote $_), "\n"; + m/\n/ or die "$_ ?"; + push @{ $r->{$`} }, $'; #'; + } + $!=0; $?=0; + close GITS + or ($!==0 && $?==256) + or failedcmd @cmd; + return $r; +} + sub workarea_setup ($) { # for use in the workarea my ($t_local_git_cfg) = @_; |