Re: [PATCH v3 1/3] get_main_worktree(): allow it to be called in the Git directory
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Feb 27, 2020, 15:58 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2002271658250.46@tvgsbejvaqbjf.bet>
- In-Reply-To
- <CAPig+cR9wwcbnuFmVuoDr6OSq29ZCSt6Kr5KtG3HPsDgM5mGSA@mail.gmail.com>
Hi Eric,
On Mon, 24 Feb 2020, Eric Sunshine wrote:
Show 29 quoted lines
> On Mon, Feb 24, 2020 at 1:58 PM Johannes Schindelin > <Johannes.Schindelin@gmx.de> wrote: > > > On Mon, Feb 24, 2020 at 7:12 AM Eric Sunshine <sunshine@sunshineco.com> wrote: > > > > This change makes the code unnecessarily confusing and effectively > > > > turns the final line into dead code. I would much rather see the three > > > > cases spelled out explicitly, perhaps like this: > > > > > > > > if (!strbuf_strip_suffix(&worktree_path, "/.git/.") && /* in .git dir */ > > > > !strbuf_strip_suffix(&worktree_path, "/.git/")) /* in worktree */ > > > > strbuf_strip_suffix(&worktree_path, "/."); /* in bare repo */ > > > > I would be really cautious about that. > > > > To me, the originally proposed change says: strip `/.`, if any. Then, > > strip `/.git`, and if successful, strip another `/.`, if any. > > That's not at all what the original said, which is reproduced here: > > if (!strbuf_strip_suffix(&worktree_path, "/.git")) > strbuf_strip_suffix(&worktree_path, "/."); > > It says "try stripping '/.git'; if that fails, try stripping '/.'". > That is, it recognizes and handles two distinct cases: (1) the path to > the .git directory of a non-bare repository, which always ends with > "/.git", and (2) the path to a bare git repository, which always ends > with "/.". So, the original code wasn't doing any sort of incremental > stripping of suffixes; it was just handling two known distinct cases. > > Perhaps you missed the '!' in the conditional?
I totally did. Sorry!
Ciao, Dscho