git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Duy Nguyen <pclouds@gmail.com>
To: Shaheed Haque <shaheedhaque@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: "add worktree" fails with "fatal: Invalid path" error
Date: Mon, 13 May 2019 16:20:42 +0700	[thread overview]
Message-ID: <CACsJy8C++Ds4kfs_Wc8UiVQgni-ypbyJ+0bFg1m5brt+s0Tfig@mail.gmail.com> (raw)
In-Reply-To: <CAHAc2je-Yz4oej-sqvp+G+2Wv+eBABeJWUMm4scRwF2z_diUXw@mail.gmail.com>

On Sun, May 12, 2019 at 5:14 PM Shaheed Haque <shaheedhaque@gmail.com> wrote:
>
> Hi,
>
> I'm running git v.2.20.1 on Ubuntu from a program which follows the pattern:
>
> ============
> 1. create a temporary directory /tmp/tmpabc

When is this directory deleted? After step 3a?

> 2. in a loop:
>     2a. create a second level of temporary directory /tmp/tmpabc/tmpworktree123
>     2b. use "git worktree add" on the second level directory
>     2c. do something
> 3. cleanup
>     3b. "git branch -D" on each basename(second level directory)
>     3a. "git worktree prune"
> ============
>
> The loop size is of the order of 8-20. In step 2b, I often get errors
> like this (from a Bash reproducer):
>
> ============
> $ git worktree add /tmp/tmpgtxug4y9/git_worktree.gBGqnfnU
> Preparing worktree (new branch 'git_worktree.gBGqnfnU')
> fatal: Invalid path '/tmp/tmp1q9ysvyl': No such file or directory
> ============
>
> I can see that the problematic path exists in the "gitdir" file of
> what must be an earlier worktree from an older run (the branch is
> gone, but the tree is still there). The path appear to relate to the
> older run's first level directory:
>
> ============
> $ grep -r /tmp/tmp1q9ysvyl ../.git/worktrees/
> ../.git/worktrees/git_worktree.frcwtjt_/gitdir:/tmp/tmp1q9ysvyl/git_worktree.frcwtjt_/.git
> $ git worktree list
> ...
> /tmp/tmp1q9ysvyl/git_worktree.frcwtjt_  edde3f25 (detached HEAD)
> ...
> $ git branch | grep frcwtjt_
> <no matches>
> ============

Yeah I think I know where that "Invalid path" comes from and it should
not be there (at least it should not be a fatal error). I'll need to
reproduce this first. But I'm certain you've given me enough
information to do so.

> NOTE: I've not yet had to try deleting the worktree, since "add
> worktree" does appear to work some of the time, so I am able to limp
> along.

It's probably best to stay clean and delete things after you're done.
At least you should be able to avoid this problem this way until it's
fixed.

>
> I have these questions:
>
> 1. There is no branch or first level directory, but "git prune" has
> not deleted the worktree, is this expected?

I assume you meant "git worktree prune", not "git prune". See
gc.worktreePruneExpire. Dead worktree info stays for a while until
it's deleted, so that you can recover stuff if you need to.

> 2. Is there something wrong with the sequence of steps I am following?

Nope. I mean, you could try "git worktree remove" to be on the safe
side. But it should work even without that. To me this looks very much
like a bug.

> Thanks, Shaheed
>
> P.S. I have an strace of a failing worktree add if needed.
-- 
Duy

  reply	other threads:[~2019-05-13  9:21 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-12 10:12 "add worktree" fails with "fatal: Invalid path" error Shaheed Haque
2019-05-13  9:20 ` Duy Nguyen [this message]
2019-05-13 12:55   ` Shaheed Haque
2019-05-14 12:33     ` Duy Nguyen
2019-05-14 14:48       ` Shaheed Haque
2019-05-13 10:49 ` [PATCH] worktree add: be tolerant of corrupt worktrees Nguyễn Thái Ngọc Duy
2019-05-13 12:42   ` Shaheed Haque
2019-05-17  7:46   ` Eric Sunshine
2019-05-18 11:49     ` Duy Nguyen
2019-06-01 19:29       ` Shaheed Haque

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=CACsJy8C++Ds4kfs_Wc8UiVQgni-ypbyJ+0bFg1m5brt+s0Tfig@mail.gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=shaheedhaque@gmail.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).