Tested-by: Dennis Kaarsemaker <dennis@xxxxxxxxxxxxxxx> I've been using this branch for a little while now and have no breakages to report. Max Kirillov reported some bugs in the interaction with submodules which I plan to chase when I have some time unless someone beats me to it :) On wo, 2014-07-09 at 14:32 +0700, Nguyễn Thái Ngọc Duy wrote: > This is basically a reroll from what was parked on 'pu' with two > new patches at the end: one to not share info/sparse-checkout > across worktrees, and one to allow 'checkout --to` from a bare > repository. > > I cherry-picked two patches from jk/xstrfmt (on next) because they > result in non-trivial conflicts. When this series is merged with > jk/xstrfmt, you still get conflicts in environment.c, but you can just > pick up my changes and drop Jeff's. > > Dennis Kaarsemaker (1): > checkout: don't require a work tree when checking out into a new one > > Jeff King (2): > setup_git_env: use git_pathdup instead of xmalloc + sprintf > setup_git_env(): introduce git_path_from_env() helper > > Nguyễn Thái Ngọc Duy (29): > path.c: make get_pathname() return strbuf instead of static buffer > path.c: make get_pathname() call sites return const char * > git_snpath(): retire and replace with strbuf_git_path() > path.c: rename vsnpath() to do_git_path() > path.c: group git_path(), git_pathdup() and strbuf_git_path() together > git_path(): be aware of file relocation in $GIT_DIR > *.sh: respect $GIT_INDEX_FILE > reflog: avoid constructing .lock path with git_path > fast-import: use git_path() for accessing .git dir instead of get_git_dir() > commit: use SEQ_DIR instead of hardcoding "sequencer" > $GIT_COMMON_DIR: a new environment variable > git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects > *.sh: avoid hardcoding $GIT_DIR/hooks/... > git-stash: avoid hardcoding $GIT_DIR/logs/.... > setup.c: convert is_git_directory() to use strbuf > setup.c: detect $GIT_COMMON_DIR in is_git_directory() > setup.c: convert check_repository_format_gently to use strbuf > setup.c: detect $GIT_COMMON_DIR check_repository_format_gently() > setup.c: support multi-checkout repo setup > wrapper.c: wrapper to open a file, fprintf then close > use new wrapper write_file() for simple file writing > checkout: support checking out into a new working directory > checkout: clean up half-prepared directories in --to mode > checkout: detach if the branch is already checked out elsewhere > prune: strategies for linked checkouts > gc: style change -- no SP before closing bracket > gc: support prune --repos > count-objects: report unused files in $GIT_DIR/repos/... > git_path(): keep "info/sparse-checkout" per work-tree > > Documentation/config.txt | 9 ++ > Documentation/git-checkout.txt | 34 +++++ > Documentation/git-prune.txt | 3 + > Documentation/git-rev-parse.txt | 10 ++ > Documentation/git.txt | 9 ++ > Documentation/gitrepository-layout.txt | 75 ++++++++-- > builtin/branch.c | 4 +- > builtin/checkout.c | 248 ++++++++++++++++++++++++++++++++- > builtin/clone.c | 9 +- > builtin/commit.c | 2 +- > builtin/count-objects.c | 4 +- > builtin/fetch.c | 5 +- > builtin/fsck.c | 4 +- > builtin/gc.c | 21 ++- > builtin/init-db.c | 7 +- > builtin/prune.c | 74 ++++++++++ > builtin/receive-pack.c | 2 +- > builtin/reflog.c | 2 +- > builtin/remote.c | 2 +- > builtin/repack.c | 8 +- > builtin/rev-parse.c | 11 ++ > cache.h | 17 ++- > daemon.c | 11 +- > environment.c | 45 ++++-- > fast-import.c | 7 +- > git-am.sh | 22 +-- > git-pull.sh | 2 +- > git-rebase--interactive.sh | 6 +- > git-rebase--merge.sh | 6 +- > git-rebase.sh | 4 +- > git-sh-setup.sh | 2 +- > git-stash.sh | 6 +- > git.c | 2 +- > notes-merge.c | 6 +- > path.c | 234 +++++++++++++++++++++---------- > refs.c | 86 +++++++----- > refs.h | 2 +- > run-command.c | 4 +- > run-command.h | 2 +- > setup.c | 124 +++++++++++++---- > sha1_file.c | 2 +- > submodule.c | 9 +- > t/t0060-path-utils.sh | 35 +++++ > t/t1501-worktree.sh | 76 ++++++++++ > t/t1510-repo-setup.sh | 1 + > t/t2025-checkout-to.sh (new +x) | 72 ++++++++++ > templates/hooks--applypatch-msg.sample | 4 +- > templates/hooks--pre-applypatch.sample | 4 +- > trace.c | 1 + > transport.c | 8 +- > wrapper.c | 31 +++++ > 51 files changed, 1109 insertions(+), 265 deletions(-) > create mode 100755 t/t2025-checkout-to.sh > -- Dennis Kaarsemaker www.kaarsemaker.net -- 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