chiark / gitweb /
Dgit.pm: Abolish now-unused $t_local_git_cfg playtree_setup arg
[dgit.git] / Debian / Dgit.pm
index 3f1d1b7bee630ddaca0d5dd52522e52f2b8f828b..8ed836492df67bc54ada61f873d494e7a846fd98 100644 (file)
@@ -987,7 +987,7 @@ sub reflog_cache_lookup ($$) {
 #    changedir playground
 #    changedir $maindir
 #
-#    playtree_setup $local_git_cfg
+#    playtree_setup
 #            # ^ call in some (perhaps trivial) subdir of playground
 #
 #    rmtree playground
@@ -1046,28 +1046,28 @@ sub fresh_playground ($) {
 
 # ----- playtrees -----
 
-sub playtree_setup (;$) {
-    my ($t_local_git_cfg) = @_;
-    $t_local_git_cfg //= $local_git_cfg;
+sub playtree_setup () {
     # for use in the playtree
     # $maindir must be set, eg by calling record_maindir or fresh_playground
-    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;
-    }
     # this is confusing: we have
     #   .                   playtree, not a worktree, has .git/, our cwd
     #   $maindir            might be a worktree so
     #   $maindir_gitdir     contains our main working "dgit", HEAD, etc.
     #   $maindir_gitcommon  the shared stuff, including .objects
-    rmtree('.git/objects');
-    symlink "$maindir_gitcommon/objects",'.git/objects' or confess "$!";
+
+    # we need to invoke git-playtree-create via git because
+    # there may be config options it needs which are only available
+    # to us, sensibly, in @git
+
+    # And, we look for it in @INC too.  This is a bit perverse.
+    # We do this because in the Debian packages we want to have
+    # a copy of this script in each binary package, rather than
+    # making yet another .deb or tangling the dependencies.
+    # @INC is conveniently available.
+    my $newpath = join ':', +(grep { !m/:/ } @INC),
+                 '/usr/share/dgit', $ENV{PATH};
+    runcmd qw(env), "PATH=$newpath", @git, qw(playtree-create .);
+
     ensuredir '.git/info';
     open GA, "> .git/info/attributes" or confess "$!";
     print GA "* $negate_harmful_gitattrs\n" or confess "$!";