git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: git@vger.kernel.org, Duy Nguyen <pclouds@gmail.com>
Subject: Re: [PATCH 0/9] worktree: fix bugs and broaden --force applicability
Date: Thu, 30 Aug 2018 03:54:31 -0400	[thread overview]
Message-ID: <20180830075431.GF11944@sigill.intra.peff.net> (raw)
In-Reply-To: <20180828212026.21989-1-sunshine@sunshineco.com>

On Tue, Aug 28, 2018 at 05:20:17PM -0400, Eric Sunshine wrote:

> This series started as a fix for a bug reported by Peff[1] in which the
> "database" of worktrees could be corrupted (or at least become
> internally inconsistent) by having multiple worktree entries associated
> with the same path.
> 
> Peff's particular use-case for git-worktree is Documentation/doc-diff
> which wants to re-use a worktree if it exists or create it anew if it
> doesn't. Unfortunately, this is a bit more difficult than it should be
> if the worktree directory is deleted manually (without pruning the
> worktree entry) between script invocations. To simplify this use-case
> for tools, it was suggested[2] that "git worktree add --force" could
> deal with the problem of a registered-but-missing worktree (much as a
> tool might rely upon "mkdir -p" to create or re-use an existing
> directory). This series implements that proposal, as well.
> 
> Fixing the original bug revealed another existing bug, and after several
> additional "while we're here" changes, the series ended up a bit longer
> than expected.

Thanks for working on this. I think this nicely solves the problem I was
having.  I had a few minor comments which I sent in reply to individual
patches, but overall it looks very good. I'd be happy to see it picked
up with or without any changes based on my comments.

I'd want to do this on top. :)

-- >8 --
Subject: [PATCH] doc-diff: force worktree add

We avoid re-creating our temporary worktree if it's already
there. But we may run into a situation where the worktree
has been deleted, but an entry still exists in
$GIT_DIR/worktrees.

Older versions of git-worktree would annoyingly create a
series of duplicate entries. Recent versions now detect and
prevent this, allowing you to override with "-f". Since we
know that the worktree in question was just our temporary
workspace, it's safe for us to always pass "-f".

Signed-off-by: Jeff King <peff@peff.net>
---
 Documentation/doc-diff | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/doc-diff b/Documentation/doc-diff
index f483fe427c..19d841ddeb 100755
--- a/Documentation/doc-diff
+++ b/Documentation/doc-diff
@@ -54,7 +54,7 @@ fi
 # results that don't differ between the two trees.
 if ! test -d "$tmp/worktree"
 then
-	git worktree add --detach "$tmp/worktree" "$from" &&
+	git worktree add -f --detach "$tmp/worktree" "$from" &&
 	dots=$(echo "$tmp/worktree" | sed 's#[^/]*#..#g') &&
 	ln -s "$dots/config.mak" "$tmp/worktree/config.mak"
 fi
-- 
2.19.0.rc1.539.g3876d0831e


  parent reply	other threads:[~2018-08-30  7:54 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-28 21:20 [PATCH 0/9] worktree: fix bugs and broaden --force applicability Eric Sunshine
2018-08-28 21:20 ` [PATCH 1/9] worktree: don't die() in library function find_worktree() Eric Sunshine
2018-08-28 21:20 ` [PATCH 2/9] worktree: move delete_git_dir() earlier in file for upcoming new callers Eric Sunshine
2018-08-28 21:20 ` [PATCH 3/9] worktree: generalize delete_git_dir() to reduce code duplication Eric Sunshine
2018-08-30  6:57   ` Jeff King
2018-08-30  8:45     ` Eric Sunshine
2018-08-28 21:20 ` [PATCH 4/9] worktree: prepare for more checks of whether path can become worktree Eric Sunshine
2018-08-28 21:20 ` [PATCH 5/9] worktree: disallow adding same path multiple times Eric Sunshine
2018-08-30  7:28   ` Jeff King
2018-08-30  8:22     ` Eric Sunshine
2018-08-28 21:20 ` [PATCH 6/9] worktree: teach 'add' to respect --force for registered but missing path Eric Sunshine
2018-08-30  7:36   ` Jeff King
2018-08-30  8:26     ` Eric Sunshine
2018-08-28 21:20 ` [PATCH 7/9] worktree: teach 'move' to override lock when --force given twice Eric Sunshine
2018-08-30  7:38   ` Jeff King
2018-08-30  8:30     ` Eric Sunshine
2018-08-28 21:20 ` [PATCH 8/9] worktree: teach 'remove' " Eric Sunshine
2018-08-30  7:40   ` Jeff King
2018-08-30  8:33     ` Eric Sunshine
2018-08-28 21:20 ` [PATCH 9/9] worktree: delete .git/worktrees if empty after 'remove' Eric Sunshine
2018-08-30  7:54 ` Jeff King [this message]
2018-08-30  8:57   ` [PATCH 0/9] worktree: fix bugs and broaden --force applicability Eric Sunshine
2018-08-30  9:04   ` Eric Sunshine
2018-08-30 19:46     ` Jeff King
2018-08-30 20:14       ` Junio C Hamano
2018-08-30 23:49         ` Ramsay Jones
2018-08-31  0:54           ` Jeff King
2018-08-31 21:57             ` Ramsay Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180830075431.GF11944@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).