summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Debian/Dgit.pm26
-rwxr-xr-xdgit17
2 files changed, 26 insertions, 17 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm
index 6977ed2..aef0112 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 ef60873..89f496d 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 () {