This is mostly a resend from last time [1]. The main difference is patch 10/11 to prevent moving a worktree that contains submodules because these .git files may need rewritten to point to the right place. I'm leaving the rewriting .git files for future (preferably done by "submodules guys"). [1] https://public-inbox.org/git/20160625075433.4608-1-pclouds@xxxxxxxxx/ Nguyễn Thái Ngọc Duy (11): copy.c: import copy_file() from busybox copy.c: delete unused code in copy_file() copy.c: convert bb_(p)error_msg to error(_errno) copy.c: style fix copy.c: convert copy_file() to copy_dir_recursively() worktree.c: add validate_worktree() worktree.c: add update_worktree_location() worktree move: new command worktree move: accept destination as directory worktree move: refuse to move worktrees with submodules worktree remove: new command Documentation/git-worktree.txt | 28 ++- builtin/worktree.c | 179 ++++++++++++++++ cache.h | 1 + contrib/completion/git-completion.bash | 5 +- copy.c | 369 +++++++++++++++++++++++++++++++++ t/t2028-worktree-move.sh | 56 +++++ worktree.c | 84 ++++++++ worktree.h | 11 + 8 files changed, 722 insertions(+), 11 deletions(-) -- 2.8.2.524.g6ff3d78