Skip to content
  • Junio C Hamano's avatar
    Fix initialization of a bare repository · 6adcca3f
    Junio C Hamano authored
    
    
    Here is my attempt to fix this with a minimally intrusive patch.
    
     * As "git --bare init" cannot tell if it was called with --bare or
       just "GIT_DIR=. git init", I added an explicit assignment of
       is_bare_repository_cfg on the codepath for "git --bare".
    
     * GIT_WORK_TREE alone without GIT_DIR does not make any sense,
       nor GIT_WORK_TREE with an explicit "git --bare".  Catch that
       mistake.  It might make sense to move this check to "git.c"
       side as well, but I tried to shoot for the minimum change for
       now.
    
     * Some scripts, especially from the olden days, rely on
       traditional GIT_DIR behaviour in "git init".  Namely, these
       are some notable patterns:
    
       (create a bare repository)
       - mkdir some.git && cd some.git && GIT_DIR=. git init
       - mkdir some.git && cd some.git && git --bare init
    
       (create a non-bare repository)
       - mkdir .git && GIT_DIR=.git git init
       - mkdir .git && GIT_DIR=`pwd`/.git git init
    
    This comes with a new test script and also passes the existing
    test suite, but there may be cases that are still broken with
    the current tip of master and this patch does not yet fix.  I'd
    appreciate help in straightening this mess out.
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    6adcca3f