• J
    handle "git --bare init <dir>" properly · 87a074df
    Jeff King 提交于
    If we know we are creating a bare repository, we use setenv
    to set the GIT_DIR directory to the current directory
    (either where we already were, or one we created and chdir'd
    into with "git init --bare <dir>").
    
    However, with "git --bare init <dir>" (note the --bare as a
    git wrapper option), the setup code actually sets GIT_DIR
    for us, but it uses the wrong, original cwd when a directory
    is given. Because our setenv does not use the overwrite
    flag, it is ignored.
    
    We need to set the overwrite flag, but only when we are
    given a directory on the command line. That still allows:
    
      GIT_DIR=foo.git git init --bare
    
    to work. The behavior is changed for:
    
      GIT_DIR=foo.git git init --bare bar.git
    
    which used to create the repository in foo.git, but now will
    use bar.git. This is more sane, as command line options
    should generally override the environment.
    
    Noticed by Oliver Hoffmann.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    87a074df
init-db.c 13.8 KB