I think this is good enough to be further polished and maybe released. The series adds four new commands and bash completion for git-worktree. Remaining work to do on git-worktree: - "git worktree move --repository", in v1 but left out in v2 because it's trickier. - .git/config issue and submodule support A bit off topic, I've been using this script to add "cw" command, to chdir to another worktree with tab-completion. It works wonderfully, but I'm not sure if it can ever be merged to git-completion.bash. -- 8< -- cw() { cd "$(git worktree list --porcelain | grep -B2 refs/heads/$1 | head -n1 | cut -f 2 -d ' ')" } _git_cw() { local cur words cword prev _get_comp_words_by_ref -n =: cur words cword prev local list="$(git worktree list --porcelain | grep '^branch refs/heads/' | cut -c 19-)" __gitcomp "$list" } complete -o bashdefault -o default -o nospace -F _git_cw cw 2>/dev/null || \ complete -o default -o nospace -F _git_cw cw -- 8< -- Nguyễn Thái Ngọc Duy (26): usage.c: move format processing out of die_errno() usage.c: add sys_error() that prints strerror() automatically copy.c: import copy_file() from busybox copy.c: delete unused code in copy_file() copy.c: convert bb_(p)error_msg to (sys_)error copy.c: style fix copy.c: convert copy_file() to copy_dir_recursively() completion: support git-worktree git-worktree.txt: keep subcommand listing in alphabetical order wrapper.c: allow to create an empty file with write_file() path.c: add git_common_path() and strbuf_git_common_path() worktree.c: use is_dot_or_dotdot() worktree.c: store "id" instead of "git_dir" worktree.c: add clear_worktree() worktree.c: add find_worktree_by_path() worktree.c: add is_main_worktree() worktree.c: add validate_worktree() worktree.c: add update_worktree_location() worktree.c: add is_worktree_locked() worktree: avoid 0{40}, too many zeroes, hard to read worktree: simplify prefixing paths worktree: add "lock" command worktree: add "unlock" command worktree: add "move" commmand worktree move: accept destination as directory worktree: add "remove" command Documentation/git-worktree.txt | 55 +++-- builtin/worktree.c | 240 ++++++++++++++++++++- cache.h | 4 + contrib/completion/git-completion.bash | 29 +++ copy.c | 369 +++++++++++++++++++++++++++++++++ git-compat-util.h | 1 + path.c | 29 +++ t/t2028-worktree-move.sh (new +x) | 103 +++++++++ usage.c | 35 +++- worktree.c | 171 +++++++++++++-- worktree.h | 40 +++- wrapper.c | 2 +- 12 files changed, 1029 insertions(+), 49 deletions(-) create mode 100755 t/t2028-worktree-move.sh -- 2.7.0.377.g4cd97dd -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html