This is needed to fix #865863: we need to know what our operation is,
before we can decide whether to look for --local git config.
The code which now runs earlier is:
* The messages about $dryrun_level (which is set only by
the command line, and not by configuration - verified by
searching for $dryrun_level).
* Usage failure if @ARGV empty. This is not affected by
configuration. (parseopts does the argument parsing and
already runs before git_slurp_config.)
* Extracting the $cmd from @ARGV.
* Calling $pre_fn. There is only one pre_* sub, which is
pre_gbp_build. It provides the default for $quilt_mode.
$quilt_mode is indeed somewhat entangled with the git config,
but this takes place in parseopts_late_defaults, which is
called much later.
Therefore there is no functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
parseopts();
check_env_sanity();
parseopts();
check_env_sanity();
print STDERR "DRY RUN ONLY\n" if $dryrun_level > 1;
print STDERR "DAMP RUN - WILL MAKE LOCAL (UNSIGNED) CHANGES\n"
print STDERR "DRY RUN ONLY\n" if $dryrun_level > 1;
print STDERR "DAMP RUN - WILL MAKE LOCAL (UNSIGNED) CHANGES\n"
my $pre_fn = ${*::}{"pre_$cmd"};
$pre_fn->() if $pre_fn;
my $pre_fn = ${*::}{"pre_$cmd"};
$pre_fn->() if $pre_fn;
my $fn = ${*::}{"cmd_$cmd"};
$fn or badusage "unknown operation $cmd";
$fn->();
my $fn = ${*::}{"cmd_$cmd"};
$fn or badusage "unknown operation $cmd";
$fn->();