builtin/worktree: move setup of commondir file earlier
Shuffle around how we create supporting worktree files so that we first ensure that the worktree has all link files ("gitdir", "commondir") before we try to initialize the ref database by writing "HEAD". This will be required by a subsequent commit where we start to initialize the ref database via `refs_init_db()`, which will require an initialized `struct worktree *`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committed
Jan 8, 2024 at 11:05 UTC
84f0ea956fbd3a3c9989a2d44da27881c0a5f546
1 file changed
+4
-3
builtin/worktree.c
+4
-3
@@ -495,6 +495,10 @@ static int add_worktree(const char *path, const char *refname,
495
strbuf_realpath(&realpath, get_git_common_dir(), 1);
496
write_file(sb_git.buf, "gitdir: %s/worktrees/%s",
497
realpath.buf, name);
498
+ strbuf_reset(&sb);
499
+ strbuf_addf(&sb, "%s/commondir", sb_repo.buf);
500
+ write_file(sb.buf, "../..");
501
+
502
/*
503
* This is to keep resolve_ref() happy. We need a valid HEAD
504
* or is_git_directory() will reject the directory. Any value which
@@ -505,9 +509,6 @@ static int add_worktree(const char *path, const char *refname,
509
strbuf_reset(&sb);
510
strbuf_addf(&sb, "%s/HEAD", sb_repo.buf);
511
write_file(sb.buf, "%s", oid_to_hex(null_oid()));
508
- strbuf_reset(&sb);
509
- strbuf_addf(&sb, "%s/commondir", sb_repo.buf);
510
- write_file(sb.buf, "../..");
512
513
/*
514
* If the current worktree has sparse-checkout enabled, then copy