summaryrefslogtreecommitdiff
path: root/builtin/commit.c
diff options
context:
space:
mode:
authorLibravatar Eric Sunshine <sunshine@sunshineco.com>2020-08-31 02:58:00 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-08-31 11:47:45 -0700
commit59d876ccd688ae0fe761b571afe77a7c8317eb88 (patch)
tree1756c6d41a14ad04bc522ba1fd7599a4e7b29015 /builtin/commit.c
parentinit: teach --separate-git-dir to repair linked worktrees (diff)
downloadtgif-59d876ccd688ae0fe761b571afe77a7c8317eb88.tar.xz
init: make --separate-git-dir work from within linked worktree
The intention of `git init --separate-work-dir=<path>` is to move the .git/ directory to a location outside of the main worktree. When used within a linked worktree, however, rather than moving the .git/ directory as intended, it instead incorrectly moves the worktree's .git/worktrees/<id> directory to <path>, thus disconnecting the linked worktree from its parent repository and breaking the worktree in the process since its local .git file no longer points at a location at which it can find the object database. Fix this broken behavior. An intentional side-effect of this change is that it also closes a loophole not caught by ccf236a23a (init: disallow --separate-git-dir with bare repository, 2020-08-09) in which the check to prevent --separate-git-dir being used in conjunction with a bare repository was unable to detect the invalid combination when invoked from within a linked worktree. Therefore, add a test to verify that this loophole is closed, as well. Reported-by: Henré Botha <henrebotha@gmail.com> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/commit.c')
0 files changed, 0 insertions, 0 deletions