diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-05-16 11:51:51 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-05-16 11:51:51 +0900 |
commit | 4b44b7b1df44d371eaf3fbed75829d1a749bc7df (patch) | |
tree | d8ea9ed31a6946e476db01034a653a2bbd86084c /t/helper | |
parent | a0ab83ebd807f2bfe1a565ff94fe7d3c6903efee (diff) | |
parent | d026a25657cbe15ceb6bcb5d5047a36a0a70b33e (diff) | |
download | git-4b44b7b1df44d371eaf3fbed75829d1a749bc7df.tar.gz |
Merge branch 'nd/worktree-kill-parse-ref'
"git gc" did not interact well with "git worktree"-managed
per-worktree refs.
* nd/worktree-kill-parse-ref:
refs: kill set_worktree_head_symref()
worktree.c: kill parse_ref() in favor of refs_resolve_ref_unsafe()
refs: introduce get_worktree_ref_store()
refs: add REFS_STORE_ALL_CAPS
refs.c: make submodule ref store hashmap generic
environment.c: fix potential segfault by get_git_common_dir()
Diffstat (limited to 't/helper')
-rw-r--r-- | t/helper/test-ref-store.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c index 2d84c45ffe..4a487c014e 100644 --- a/t/helper/test-ref-store.c +++ b/t/helper/test-ref-store.c @@ -1,5 +1,6 @@ #include "cache.h" #include "refs.h" +#include "worktree.h" static const char *notnull(const char *arg, const char *name) { @@ -32,6 +33,23 @@ static const char **get_store(const char **argv, struct ref_store **refs) strbuf_release(&sb); *refs = get_submodule_ref_store(gitdir); + } else if (skip_prefix(argv[0], "worktree:", &gitdir)) { + struct worktree **p, **worktrees = get_worktrees(0); + + for (p = worktrees; *p; p++) { + struct worktree *wt = *p; + + if (!wt->id) { + /* special case for main worktree */ + if (!strcmp(gitdir, "main")) + break; + } else if (!strcmp(gitdir, wt->id)) + break; + } + if (!*p) + die("no such worktree: %s", gitdir); + + *refs = get_worktree_ref_store(*p); } else die("unknown backend %s", argv[0]); |