From 0b0c7e0ce2f0f17cacef7eb3159fc9de1850bf37 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 10 Jul 2017 11:30:51 +0100 Subject: [PATCH] Dgit.pm: workarea_setup: Break out from dgit This subroutine needs a hash of the main tree's git config, so that some of the config settings which affect the object store can be properly honoured. Purely code motion, except for the changed reference to $gitcfgs. No functional change. Signed-off-by: Ian Jackson --- Debian/Dgit.pm | 26 +++++++++++++++++++++++++- dgit | 17 +---------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 6977ed21..aef0112a 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -29,6 +29,7 @@ use Config; use Digest::SHA; use Data::Dumper; use IPC::Open2; +use File::Path; BEGIN { use Exporter (); @@ -56,7 +57,8 @@ BEGIN { printdebug debugcmd $debugprefix *debuglevel *DEBUG shellquote printcmd messagequote - $negate_harmful_gitattrs); + $negate_harmful_gitattrs + workarea_setup); # implicitly uses $main::us %EXPORT_TAGS = ( policyflags => [qw(NOFFCHECK FRESHREPO NOCOMMITCHECK)] ); @EXPORT_OK = @{ $EXPORT_TAGS{policyflags} }; @@ -415,4 +417,26 @@ sub is_fast_fwd ($$) { } } +sub workarea_setup ($) { + # for use in the workarea + my ($t_local_git_cfg) = @_; + # should be run in a directory .git/FOO/BAR of a working tree + 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 = $t_local_git_cfg->{$copy}; + next unless $v; + runcmd qw(git config), $copy, $_ foreach @$v; + } + rmtree('.git/objects'); + symlink '../../../../objects','.git/objects' or die $!; + ensuredir '.git/info'; + open GA, "> .git/info/attributes" or die $!; + print GA "* $negate_harmful_gitattrs\n" or die $!; + close GA or die $!; +} + 1; diff --git a/dgit b/dgit index ef608732..89f496d7 100755 --- a/dgit +++ b/dgit @@ -1705,22 +1705,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 $!; - ensuredir '.git/info'; - open GA, "> .git/info/attributes" or die $!; - print GA "* $negate_harmful_gitattrs\n" or die $!; - close GA or die $!; + workarea_setup $gitcfgs{local}; } sub git_write_tree () { -- 2.30.2