Thread (1 message) 1 message, 1 author, 2020-09-02

Re: Bug report: git cat-file -e / rev-list disagree with git fsck on empty tree

From: Junio C Hamano <hidden>
Date: 2020-09-02 19:52:51

Anish R Athalye [off-list ref] writes:
This is related to the change made in f06ab027efd2 (rev-list: allow cached
objects in existence check).

That patch seemed designed to allow the workflow where the empty tree is
missing from the object store, so
`git cat-file -e 4b825dc642cb6eb9a060e54bf8d69288fbee4904` and
`git rev-list --objects 4b825dc642cb6eb9a060e54bf8d69288fbee4904`
both return success even when the object is not physically present.
That sounds buggy.  I know git knows about both empty tree and empty
blob, but replacing the empty tree object name with the empty blob
object name in the above in a freshly-created empty repository gives
me errors from both of them, which is what I'd expect.
However, in the same situation:

    $ git fsck
    [...]
    missing tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
... and if some other tree references to the empty tree (which is
unusual---I do not think we record such a tree, but some third-party
tools might), it is understandable fsck would complain.
I'm not sure if this is the intended behavior (the tree is indeed missing, so
in some sense, this is reasonable). But it seems somewhat confusing that it
disagrees with the interrogation commands.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help