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

Re: Bug in "revision.c: --all adds HEAD from all worktrees" ?

From
Luke Diamand <luke@diamand.org>
Date
Nov 16, 2017, 01:06 UTC
Message-ID
<CAE5ih79wG3ws=OyXqvbd+QKyyAmM-D2JVO5r9G5VHtoOfiXdug@mail.gmail.com>
In-Reply-To
<xmqqtvxvyz3m.fsf@gitster.mtv.corp.google.com>
On 15 November 2017 at 22:08, Junio C Hamano <gitster@pobox.com> wrote:
Show 11 quoted lines
> Luke Diamand <luke@diamand.org> writes:
>
>> Quite a few of the worktrees have expired - their head revision has
>> been GC'd and no longer points to anything sensible
>> (gc.worktreePruneExpire). The function other_head_refs() in worktree.c
>> bails out if there's an error, which I think is the problem. I wonder
>> if it should instead just report something and then keep going.
>
> Am I correct to understand that your "git fsck" would fail because
> these HEAD refs used by other stale worktrees are pointing at
> missing objects?
git fsck says:

Checking object directories: 100% (256/256), done. Checking objects: 100% (1434634/1434634), done. error: HEAD: invalid reflog entry 7fa2b7ee4bc0d11529f659db8b13ed1f537d2a98 error: HEAD: invalid reflog entry 7fa2b7ee4bc0d11529f659db8b13ed1f537d2a98 error: HEAD: invalid reflog entry 7e79e09e8a7382f91610f7255a1b99ea59f68c0b error: refs/stash: invalid reflog entry feeb35e7b045d28943c706e761d0a2ac8206af2f error: refs/remotes/origin/master: invalid reflog entry 7fa2b7ee4bc0d11529f659db8b13ed1f537d2a98 Checking connectivity: 1419477, done. missing tree 1480c0a7ed2ad59ae701667292399c38d294658e missing tree ca2a01116bfbbd1fcbcf9812b95d8dc6c39e69d5 missing tree 5b7c41e547fc5c4c840e5b496da13d3daebc5fbe ... ...

>
> What do you mean by "expired"?  "Even though I want to keep using
> them, Git for some reason decided to destroy them." or "I no longer
> use them but kept them lying around."?
git worktree automatically prunes work trees:

"The working tree’s administrative files in the repository (see "DETAILS" below) will eventually be removed automatically (see gc.worktreePruneExpire in git-config(1)),"

In my case I didn't actually want them removed, but fortunately there's nothing important in them (there certainly isn't anymore...).

>
> If the latter, I wonder "worktree prune" to remove the
> admininstrative information for them would unblock you?
It doesn't seem to help.

$ git worktree prune -n <lists lots of unhappy trees> $ git worktree prune $ git fetch remote: Counting objects: 35, done. remote: Compressing objects: 100% (20/20), done. remote: Total 21 (delta 17), reused 5 (delta 1) Unpacking objects: 100% (21/21), done. fatal: bad object HEAD error: ssh://whatever/myrepol did not send all necessary objects $ /usr/bin/git-2.7.3 fetch <works fine>

Previous: Junio C HamanoNext: Ævar Arnfjörð Bjarmason
Message 7 of 9 in “Bug in "revision.c: --all adds HEAD from all worktrees" ?”
  1. Luke DiamandNov 13, 2017
  2. Luke DiamandNov 13, 2017
  3. Stefan BellerNov 13, 2017
  4. Luke DiamandNov 15, 2017
  5. Jeff KingNov 17, 2017
  6. Junio C HamanoNov 15, 2017
  7. Luke DiamandNov 16, 2017
  8. Ævar Arnfjörð BjarmasonMar 12, 2018
  9. Duy NguyenMar 13, 2018

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.