X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=4b19384184b9f866890c0039e6c5b6403b1324cc;hp=3cf7705dd052d8b6a1bb15737486bf9911ed686c;hb=be85ba38f1d9099179b6b6cc7cafac769ccf11da;hpb=6fab00d6201f741f87cc89a0a24443db584c4162 diff --git a/dgit b/dgit index 3cf7705d..4b193841 100755 --- a/dgit +++ b/dgit @@ -641,30 +641,14 @@ our %gitcfgs; our @gitcfgsources = qw(cmdline local global system); sub git_slurp_config () { - local ($debuglevel) = $debuglevel-2; - local $/="\0"; - # This algoritm is a bit subtle, but this is needed so that for # options which we want to be single-valued, we allow the # different config sources to override properly. See #835858. foreach my $src (@gitcfgsources) { next if $src eq 'cmdline'; # we do this ourselves since git doesn't handle it - - my @cmd = (@git, qw(config -z --get-regexp), "--$src", qw(.*)); - debugcmd "|",@cmd; - open GITS, "-|", @cmd or die $!; - while () { - chomp or die; - printdebug "=> ", (messagequote $_), "\n"; - m/\n/ or die "$_ ?"; - push @{ $gitcfgs{$src}{$`} }, $'; #'; - } - $!=0; $?=0; - close GITS - or ($!==0 && $?==256) - or failedcmd @cmd; + $gitcfgs{$src} = git_slurp_config_src $src; } } @@ -1705,19 +1689,7 @@ sub prep_ud (;$) { } sub mktree_in_ud_here () { - runcmd qw(git init -q); - runcmd qw(git config gc.auto 0); - foreach my $copy (qw(user.email user.name user.useConfigOnly - core.sharedRepository - core.compression core.looseCompression - core.bigFileThreshold core.fsyncObjectFiles)) { - my $v = $gitcfgs{local}{$copy}; - next unless $v; - runcmd qw(git config), $copy, $_ foreach @$v; - } - rmtree('.git/objects'); - symlink '../../../../objects','.git/objects' or die $!; - setup_gitattrs(1); + workarea_setup $gitcfgs{local}; } sub git_write_tree () {