This series cleans up setup.c and makes git handle worktree better. The series deprecates my patch "Move worktree setup out of..." Changes from the last version: Junio's concerns are addressed, tests are also added. Main points: - get_git_dir() is now always absolute path. - setup_git_directory_gently() will no longer do any worktree setup. If you want worktree with setup_git_directory_gently(), call setup_work_tree(). - setup_git_directory() will still setup worktree if found. The behavior is a bit more consistent as it will setup worktree no matter where it comes from. GIT_WORK_TREE, core.worktree or autodetection are treated the same. - Document setup api along the way. "make test" was run on each patch. Hopefully the series won't break anything. Tests will come later, my brain has been overheated. Remaining problems I'm aware of: - prefix when running a command from outside worktree (currently NULL) - cmd_update_index() needs setup_work_tree() Nguyễn Thái Ngọc Duy (10): "git read-tree -m" and the like require worktree Make sure setup_git_directory is called before accessing repository Make get_git_dir() and 'git rev-parse --git-dir' absolute path Make setup_work_tree() return new prefix http-push: Avoid calling setup_git_directory() twice Completely move out worktree setup from setup_git_directory_gently() builtin-archive: mark unused prefix "unused_prefix" Make setup_git_directory() auto-setup worktree if found Documentation: update api-builtin and api-setup Additional tests to capture worktree special cases Documentation/technical/api-builtin.txt | 10 +++ Documentation/technical/api-setup.txt | 91 ++++++++++++++++++++++-- builtin-apply.c | 7 ++- builtin-archive.c | 6 +- builtin-blame.c | 4 +- builtin-bundle.c | 9 +-- builtin-config.c | 15 ++--- builtin-diff-files.c | 13 ++-- builtin-diff.c | 13 ++-- builtin-ls-files.c | 10 ++-- builtin-read-tree.c | 3 + builtin-rev-parse.c | 23 ++---- builtin-rm.c | 5 +- builtin-upload-archive.c | 4 +- cache.h | 4 +- environment.c | 1 + fast-import.c | 1 + git.c | 8 +-- hash-object.c | 14 +--- http-push.c | 4 +- index-pack.c | 2 + setup.c | 114 +++++++++++------------------- t/t1300-repo-config.sh | 2 +- t/t1400-update-ref.sh | 4 +- t/t1501-worktree.sh | 57 +++++++++++++++- t/t9300-fast-import.sh | 2 +- 26 files changed, 261 insertions(+), 165 deletions(-) -- 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