chiark / gitweb /
directory refactoring: most invocations: call record_maintree
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 2 Aug 2017 18:59:53 +0000 (19:59 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 3 Aug 2017 08:57:52 +0000 (09:57 +0100)
We need to call record_maintree so that $maindir and its friends are
set, since we're going to rely on them heavily.  Most operations will
need them.

Any operation that is invoked in a git tree should definitely have
this called.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit

diff --git a/dgit b/dgit
index 9aadaf0d4753c5231c0d3d6ea95c05311397e4f0..733e6ea1c8a02ed9b45e3db505040cbd80cc4868 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -635,6 +635,7 @@ our %defcfg = ('dgit.default.distro' => 'debian',
 
 our %gitcfgs;
 our @gitcfgsources = qw(cmdline local global system);
+our $invoked_in_git_tree = 1;
 
 sub git_slurp_config () {
     # This algoritm is a bit subtle, but this is needed so that for
@@ -684,6 +685,7 @@ sub cfg {
 sub not_necessarily_a_tree () {
     # needs to be called from pre_*
     @gitcfgsources = grep { $_ ne 'local' } @gitcfgsources;
+    $invoked_in_git_tree = 0;
 }
 
 sub access_basedistro__noalias () {
@@ -6797,6 +6799,7 @@ $cmd =~ y/-/_/;
 my $pre_fn = ${*::}{"pre_$cmd"};
 $pre_fn->() if $pre_fn;
 
+record_maindir if $invoked_in_git_tree;
 git_slurp_config();
 
 my $fn = ${*::}{"cmd_$cmd"};