]> git.ipfire.org Git - thirdparty/git.git/commit - builtin/worktree.c
worktree remove: new command
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Mon, 12 Feb 2018 09:49:39 +0000 (16:49 +0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 Feb 2018 21:13:35 +0000 (13:13 -0800)
commitcc73385cf6c5c229458775bc92e7dbbe24d11611
tree4b4c59f18ee8dfad93084ca4c0b75f6a10eb1444
parent78d986b252359351a579dc2629c8384d5c8eb8ff
worktree remove: new command

This command allows to delete a worktree. Like 'move' you cannot
remove the main worktree, or one with submodules inside [1].

For deleting $GIT_WORK_TREE, Untracked files or any staged entries are
considered precious and therefore prevent removal by default. Ignored
files are not precious.

When it comes to deleting $GIT_DIR, there's no "clean" check because
there should not be any valuable data in there, except:

- HEAD reflog. There is nothing we can do about this until somebody
  steps up and implements the ref graveyard.

- Detached HEAD. Technically it can still be recovered. Although it
  may be nice to warn about orphan commits like 'git checkout' does.

[1] We do 'git status' with --ignore-submodules=all for safety
    anyway. But this needs a closer look by submodule people before we
    can allow deletion. For example, if a submodule is totally clean,
    but its repo not absorbed to the main .git dir, then deleting
    worktree also deletes the valuable .submodule repo too.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-worktree.txt
builtin/worktree.c
contrib/completion/git-completion.bash
t/t2028-worktree-move.sh