Duy Nguyen <pclo...@gmail.com> writes:

>> * 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 <gits...@pobox.com>
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

Reply via email to