Skip to content
  • Jeff King's avatar
    setup_git_directory: delay core.bare/core.worktree errors · fada7674
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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