chiark / gitweb /
directory refactoring: dgit clone: call record_maintree
[dgit.git] / dgit
diff --git a/dgit b/dgit
index bc84afb5c04ef269dc8571bbec289b95a9fb0741..a67c12cb09ceac540f5d4f359987cbe68abcbd5c 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -557,7 +557,7 @@ sub nextarg {
 }
 
 sub pre_help () {
-    no_local_git_cfg();
+    not_necessarily_a_tree();
 }
 sub cmd_help () {
     print $helpmsg or die $!;
@@ -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
@@ -681,9 +682,10 @@ sub cfg {
        "$us: distro or suite appears not to be (properly) supported";
 }
 
-sub no_local_git_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 () {
@@ -3588,6 +3590,7 @@ sub clone ($) {
     mkdir $dstdir or fail "create \`$dstdir': $!";
     changedir $dstdir;
     runcmd @git, qw(init -q);
+    record_maindir();
     setup_new_tree();
     clone_set_head();
     my $giturl = access_giturl(1);
@@ -4378,7 +4381,7 @@ END
 }
 
 sub pre_clone () {
-    no_local_git_cfg();
+    not_necessarily_a_tree();
 }
 sub cmd_clone {
     parseopts();
@@ -4592,7 +4595,7 @@ sub i_method {
 }
 
 sub pre_rpush () {
-    no_local_git_cfg();
+    not_necessarily_a_tree();
 }
 sub cmd_rpush {
     my $host = nextarg;
@@ -6369,7 +6372,7 @@ END
 }
 
 sub pre_archive_api_query () {
-    no_local_git_cfg();
+    not_necessarily_a_tree();
 }
 sub cmd_archive_api_query {
     badusage "need only 1 subpath argument" unless @ARGV==1;
@@ -6388,7 +6391,7 @@ sub repos_server_url () {
 }    
 
 sub pre_clone_dgit_repos_server () {
-    no_local_git_cfg();
+    not_necessarily_a_tree();
 }
 sub cmd_clone_dgit_repos_server {
     badusage "need destination argument" unless @ARGV==1;
@@ -6400,7 +6403,7 @@ sub cmd_clone_dgit_repos_server {
 }
 
 sub pre_print_dgit_repos_server_source_url () {
-    no_local_git_cfg();
+    not_necessarily_a_tree();
 }
 sub cmd_print_dgit_repos_server_source_url {
     badusage "no arguments allowed to dgit print-dgit-repos-server-source-url"
@@ -6797,6 +6800,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"};