chiark / gitweb /
playground refactoring: Dgit.pm: Honour $maindir in fresh_playground
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 2 Aug 2017 14:52:41 +0000 (15:52 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 3 Aug 2017 08:57:01 +0000 (09:57 +0100)
Previously, fresh_playground expected that the playground argument has
exactly the depth .git/FOO/BAR.

Now, it expects that $maindir is set.  In dgit (the only caller right
now) this is always true because dgit now uses fresh_playground.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Debian/Dgit.pm

index 27fd29a..473c01e 100644 (file)
@@ -531,7 +531,8 @@ sub fresh_playground ($) {
 sub playtree_setup (;$) {
     my ($t_local_git_cfg) = @_;
     $t_local_git_cfg //= $local_git_cfg;
 sub playtree_setup (;$) {
     my ($t_local_git_cfg) = @_;
     $t_local_git_cfg //= $local_git_cfg;
-    # should be run in a directory .git/FOO/BAR of a working tree
+    # 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
     runcmd qw(git init -q);
     runcmd qw(git config gc.auto 0);
     foreach my $copy (qw(user.email user.name user.useConfigOnly
@@ -543,7 +544,7 @@ sub playtree_setup (;$) {
        runcmd qw(git config), $copy, $_ foreach @$v;
     }
     rmtree('.git/objects');
        runcmd qw(git config), $copy, $_ foreach @$v;
     }
     rmtree('.git/objects');
-    symlink '../../../../objects','.git/objects' or die $!;
+    symlink "$maindir/.git/objects",'.git/objects' or die $!;
     ensuredir '.git/info';
     open GA, "> .git/info/attributes" or die $!;
     print GA "* $negate_harmful_gitattrs\n" or die $!;
     ensuredir '.git/info';
     open GA, "> .git/info/attributes" or die $!;
     print GA "* $negate_harmful_gitattrs\n" or die $!;