git/list[1] front-page[2] threads[3] people[4] search[5] about
 

"git worktree repair" modifies the wrong repository

From
RSRussell Stuart <russell+git.vger.kernel.org@stuart.id.au>
Date
Sep 19, 2024, 01:12 UTC
Message-ID
<E1sr5iF-0007zV-2k@binarylane-bailey.stuart.id.au>
What did you do before the bug happened? (Steps to reproduce your issue)
    /tmp$ mkdir -p gb/a gb/b
    /tmp$ cd gb/a
    /tmp/gb/a$ git init r
    Initialized empty Git repository in /tmp/gb/a/r/.git/
    /tmp/gb/a$ cd r
    /tmp/gb/a/r$ touch x
    /tmp/gb/a/r$ git add x
    /tmp/gb/a/r$ git commit -am .
    [main (root-commit) 6323b04] .
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 x
    /tmp/gb/a/r$ git branch foo
    /tmp/gb/a/r$ git worktree add ../r.foo
    Preparing worktree (new branch 'r.foo')
    HEAD is now at 6323b04 .
    /tmp/gb/a/r$ -r cp ../* ../../b/.
    -bash: -r: command not found
    /tmp/gb/a/r$ cp -a ../* ../../b/.
    /tmp/gb/a/r$ cd ../../b/r
    /tmp/gb/b/r$ git worktree repair ../r.foo
    repair: gitdir incorrect: /tmp/gb/a/r/.git/worktrees/r.foo/gitdir
    repair: .git file incorrect: /tmp/gb/a/r.foo
    /tmp/gb/b/r$ cat .git/worktrees/r.foo/gitdir 
    /tmp/gb/a/r.foo/.git
    /tmp/gb/b/r$ cat ../r.foo/.git
    gitdir: /tmp/gb/a/r/.git/worktrees/r.foo
    /tmp/gb/b/r$ cat ../../a/.git/worktrees/r.foo/gitdir 
    cat: ../../a/.git/worktrees/r.foo/gitdir: No such file or directory
    /tmp/gb/b/r$ cat ../../a/r/.git/worktrees/r.foo/gitdir 
    /tmp/gb/b/r.foo/.git
    /tmp/gb/b/r$ cat ../../a/r.foo/.git
    gitdir: /tmp/gb/b/r/.git/worktrees/r.foo
    /tmp/gb/b/r$ 
What did you expect to happen? (Expected behavior)
    I expected "/tmp/gb/b/r$ git worktree repair ../r.foo" to alter the
    repositories it was run from, ie those under the directory "/tmp/gb/b".
What happened instead? (Actual behavior)
    "/tmp/gb/b/r$ git worktree repair ../r.foo" modified the repositories
    under the directory "/tmp/gb/a".

[System Info] git version: git version 2.39.3 (Apple Git-146) cpu: arm64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh feature: fsmonitor--daemon uname: Darwin 23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:14:21 PDT 2024; root:xnu-10063.141.2~1/RELEASE_ARM64_T8103 arm64 compiler info: clang: 15.0.0 (clang-1500.3.9.4) libc info: no libc information available $SHELL (typically, interactive shell): /opt/homebrew/bin/bash

-- Regards, Russell Stuart

Next: Eric Sunshine
Message 1 of 11 in “"git worktree repair" modifies the wrong repository”
  1. Russell StuartSep 19, 2024
  2. Eric SunshineSep 19, 2024
  3. Russell StuartSep 19, 2024
  4. Eric SunshineSep 19, 2024
  5. Russell StuartSep 19, 2024
  6. Eric SunshineSep 23, 2024
  7. Phillip WoodSep 24, 2024
  8. Eric SunshineOct 3, 2024
  9. phillip.wood123@gmail.comOct 4, 2024
  10. Junio C HamanoOct 4, 2024
  11. Russell StuartSep 25, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.