• Jeff King's avatar
    setup_git_directory: delay core.bare/core.worktree errors · fada7674
    Jeff King authored
    If both core.bare and core.worktree are set, we complain
    about the bogus config and die. Dying is good, because it
    avoids commands running and doing damage in a potentially
    incorrect setup. But dying _there_ is bad, because it means
    that commands which do not even care about the work tree
    cannot run. This can make repairing the situation harder:
    
      [setup]
      $ git config core.bare true
      $ git config core.worktree /some/path
    
      [OK, expected.]
      $ git status
      fatal: core.bare and core.worktree do not make sense
    
      [Hrm...]
      $ git config --unset core.worktree
      fatal: core.bare and core.worktree do not make sense
    
      [Nope...]
      $ git config --edit
      fatal: core.bare and core.worktree do not make sense
    
      [Gaaah.]
      $ git help config
      fatal: core.bare and core.worktree do not make sense
    
    Instead, let's issue a warning about the bogus config when
    we notice it (i.e., for all commands), but only die when the
    command tries to use the work tree (by calling setup_work_tree).
    So we now get:
    
      $ git status
      warning: core.bare and core.worktree do not make sense
      fatal: unable to set up work tree using invalid config
    
      $ git config --unset core.worktree
      warning: core.bare and core.worktree do not make sense
    
    We have to update t1510 to accomodate this; it uses
    symbolic-ref to check whether the configuration works or
    not, but of course that command does not use the working
    tree. Instead, we switch it to use `git status`, as it
    requires a work-tree, does not need any special setup, and
    is read-only (so a failure will not adversely affect further
    tests).
    
    In addition, we add a new test that checks the desired
    behavior (i.e., that running "git config" with the bogus
    config does in fact work).
    Reported-by: default avatarSZEDER Gábor <szeder@ira.uka.de>
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    fada7674
setup.c 23 KB