Skip to content
  • Jens Lehmann's avatar
    clone: support atomic operation with --separate-git-dir · 9be1980b
    Jens Lehmann authored and Junio C Hamano's avatar Junio C Hamano committed
    Since b57fb80a
    
     (init, clone: support --separate-git-dir for .git file)
    git clone supports the --separate-git-dir option to create the git dir
    outside the work tree. But when that option is used, the git dir won't be
    deleted in case the clone fails like it would be without this option. This
    makes clone lose its atomicity as in case of a failure a partly set up git
    dir is left behind. A real world example where this leads to problems is
    when "git submodule update" fails to clone a submodule and later calls to
    "git submodule update" stumble over the partially set up git dir and try
    to revive the submodule from there, which then fails with a not very user
    friendly error message.
    
    Fix that by updating the junk_git_dir variable (used to remember if and
    what git dir should be removed in case of failure) to the new value given
    with the --seperate-git-dir option. Also add a test for this to t5600 (and
    while at it fix the former last test to not cd into a directory to test
    for its existence but use "test -d" instead).
    
    Reported-by: default avatarManlio Perillo <manlio.perillo@gmail.com>
    Signed-off-by: default avatarJens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    9be1980b