summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2018-09-29 19:10:23 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-10-06 23:21:18 (GMT)
commit8aff1a9ca5a266020fe5b1bd8c54228581e34530 (patch)
treec787fa8cda7dfe83b7439d691ddd25204afd4ae9 /refs.c
parent5c79f74f0514a29fe182b0a442406105fb6f1660 (diff)
downloadgit-8aff1a9ca5a266020fe5b1bd8c54228581e34530.zip
git-8aff1a9ca5a266020fe5b1bd8c54228581e34530.tar.gz
git-8aff1a9ca5a266020fe5b1bd8c54228581e34530.tar.bz2
Add a place for (not) sharing stuff between worktrees
When multiple worktrees are used, we need rules to determine if something belongs to one worktree or all of them. Instead of keeping adding rules when new stuff comes (*), have a generic rule: - Inside $GIT_DIR, which is per-worktree by default, add $GIT_DIR/common which is always shared. New features that want to share stuff should put stuff under this directory. - Inside refs/, which is shared by default except refs/bisect, add refs/worktree/ which is per-worktree. We may eventually move refs/bisect to this new location and remove the exception in refs code. (*) And it may also include stuff from external commands which will have no way to modify common/per-worktree rules. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r--refs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/refs.c b/refs.c
index 9f7268d..1bc4ed3 100644
--- a/refs.c
+++ b/refs.c
@@ -624,6 +624,7 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **log)
static int is_per_worktree_ref(const char *refname)
{
return !strcmp(refname, "HEAD") ||
+ starts_with(refname, "refs/worktree/") ||
starts_with(refname, "refs/bisect/") ||
starts_with(refname, "refs/rewritten/");
}