Duy Nguyen [off-list ref] writes:
quoted
* nd/worktree-add-lock (2017-04-15) 2 commits
- SQUASH???
- worktree add: add --lock option
Allow to lock a workktree immediately after it's created. This helps
prevent a race between "git worktree add; git worktree lock" and "git
worktree prune".
Thanks. Also thanks for "we at least need to ensure the lock file
is there" comment, which led to this:
-- >8 --
From: Junio C Hamano <redacted>
Date: Sat, 15 Apr 2017 00:36:31 -0700
Subject: [PATCH] SQUASH???
---
builtin/worktree.c | 16 +++++++---------
t/t2025-worktree-add.sh | 2 +-
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 3dab07c829..5ebdcce793 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -243,7 +243,10 @@ static int add_worktree(const char *path, const char *refname,
* after the preparation is over.
*/
strbuf_addf(&sb, "%s/locked", sb_repo.buf);
- write_file(sb.buf, "initializing");
+ if (!opts->keep_locked)
+ write_file(sb.buf, "initializing");
+ else
+ write_file(sb.buf, "added with --lock");
strbuf_addf(&sb_git, "%s/.git", path);
if (safe_create_leading_directories_const(sb_git.buf))
@@ -306,15 +309,10 @@ static int add_worktree(const char *path, const char *refname,
done:
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/locked", sb_repo.buf);
- if (!ret && opts->keep_locked) {
- /*
- * Don't keep the confusing "initializing" message
- * after it's already over.
- */
- truncate(sb.buf, 0);
- } else {
+ if (!ret && opts->keep_locked)
+ ;
+ else
unlink_or_warn(sb.buf);
- }
argv_array_clear(&child_env);
strbuf_release(&sb);
strbuf_release(&symref);diff --git a/t/t2025-worktree-add.sh b/t/t2025-worktree-add.sh
index 6dce920c03..b5c47ac602 100755
--- a/t/t2025-worktree-add.sh
+++ b/t/t2025-worktree-add.sh
@@ -66,7 +66,7 @@ test_expect_success '"add" worktree' '
test_expect_success '"add" worktree with lock' '
git rev-parse HEAD >expect &&
git worktree add --detach --lock here-with-lock master &&
- test_must_be_empty .git/worktrees/here-with-lock/locked
+ test -f .git/worktrees/here-with-lock/locked
'
test_expect_success '"add" worktree from a subdir' '
--
2.12.2-820-g9f56312714