v3 only changes 07/16 but it's kinda important because I broke packed-refs. packed-refs' path became $GIT_DIR/packed-refs instead of $GIT_COMMON_DIR/packed-refs and as a result the majority of refs will disappear in linked worktrees. Interdiff diff --git a/refs/files-backend.c b/refs/files-backend.c index 685ea5c14..82be3f90f 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -938,9 +938,11 @@ static void files_path(struct files_ref_store *refs, struct strbuf *sb, va_start(vap, fmt); strbuf_vaddf(&tmp, fmt, vap); va_end(vap); - if (is_per_worktree_ref(tmp.buf) || - (skip_prefix(tmp.buf, "logs/", &ref) && - is_per_worktree_ref(ref))) + if (!strcmp(tmp.buf, "packed-refs") || !strcmp(tmp.buf, "logs")) + strbuf_addf(sb, "%s/%s", refs->gitcommondir.buf, tmp.buf); + else if (is_per_worktree_ref(tmp.buf) || + (skip_prefix(tmp.buf, "logs/", &ref) && + is_per_worktree_ref(ref))) strbuf_addf(sb, "%s/%s", refs->gitdir.buf, tmp.buf); else strbuf_addf(sb, "%s/%s", refs->gitcommondir.buf, tmp.buf); Nguyễn Thái Ngọc Duy (16): refs-internal.c: make files_log_ref_write() static files-backend: convert git_path() to strbuf_git_path() files-backend: add files_path() files-backend: replace *git_path*() with files_path() refs.c: share is_per_worktree_ref() to files-backend.c refs-internal.h: correct is_per_worktree_ref() files-backend: remove the use of git_path() refs.c: introduce get_main_ref_store() refs: rename lookup_ref_store() to lookup_submodule_ref_store() refs.c: flatten get_ref_store() a bit refs.c: kill register_ref_store(), add register_submodule_ref_store() refs.c: make get_main_ref_store() public and use it path.c: move some code out of strbuf_git_path_submodule() refs: move submodule code out of files-backend.c files-backend: remove submodule_allowed from files_downcast() refs: rename get_ref_store() to get_submodule_ref_store() and make it public path.c | 34 ++--- refs.c | 144 +++++++++++---------- refs.h | 13 ++ refs/files-backend.c | 349 +++++++++++++++++++++++++++++++-------------------- refs/refs-internal.h | 28 ++--- submodule.c | 31 +++++ submodule.h | 1 + 7 files changed, 348 insertions(+), 252 deletions(-) -- 2.11.0.157.gd943d85