Git submodule checkout error: "fatal: reference is not a tree"

13,094

I followed your instructions and was able to reproduce the problem.
Its not something you did, the object 280c12ab49223c64c6f914944287a7d049cf4dd0 is corrupted and there is nothing you can do in order to fix it.

I manged to do a workaround and to get the content of master:

git show 280c12ab49223c64c6f914944287a7d049cf4dd0
(will display bad object)
cd sicl
git checkout clos
git branch -d master
git fetch --all --prune
git checkout master
git fsck

After the above steps the git show 280c12ab49223c64c6f914944287a7d049cf4dd0 still display bad-object (since its a problem in the original repository)

But what that is more strange is the git fsck does not find any errors, i will look into it later on today.

As for now the workaround will allow you to continue your work.

Share:
13,094

Related videos on Youtube

Faheem Mitha
Author by

Faheem Mitha

Updated on August 04, 2022

Comments

  • Faheem Mitha
    Faheem Mitha over 1 year

    For reference, see the issue https://github.com/drmeister/clasp/issues/98

    To reproduce, do the following:

    git clone git://github.com/drmeister/clasp claspcl
    cd claspcl
    git checkout tags/0.3-test-3
    git submodule update --init
    

    The result is:

    git submodule update --init
    Submodule 'updatedAsdf' (https://github.com/drmeister/asdf.git) registered for path 'src/lisp/kernel/asdf'
    Submodule 'src/lisp/kernel/contrib/sicl' (https://github.com/drmeister/SICL.git) registered for path 'src/lisp/kernel/contrib/sicl'
    Submodule 'src/mps' (https://github.com/Ravenbrook/mps-temporary) registered for path 'src/mps'
    Cloning into 'src/lisp/kernel/asdf'...
    remote: Counting objects: 13416, done.
    remote: Total 13416 (delta 0), reused 0 (delta 0), pack-reused 13416
    Receiving objects: 100% (13416/13416), 5.34 MiB | 838.00 KiB/s, done.
    Resolving deltas: 100% (9935/9935), done.
    Checking connectivity... done.
    Submodule path 'src/lisp/kernel/asdf': checked out 'dcd692a8f9f6a5cb86133123e1c433a9afb4e7e9'
    Cloning into 'src/lisp/kernel/contrib/sicl'...
    remote: Counting objects: 49356, done.
    remote: Total 49356 (delta 0), reused 0 (delta 0), pack-reused 49356
    Receiving objects: 100% (49356/49356), 8.49 MiB | 298.00 KiB/s, done.
    Resolving deltas: 100% (37020/37020), done.
    Checking connectivity... done.
    fatal: reference is not a tree: 280c12ab49223c64c6f914944287a7d049cf4dd0
    Cloning into 'src/mps'...
    remote: Counting objects: 25250, done.
    remote: Total 25250 (delta 0), reused 0 (delta 0), pack-reused 25250
    Receiving objects: 100% (25250/25250), 86.87 MiB | 831.00 KiB/s, done.
    Resolving deltas: 100% (15851/15851), done.
    Checking connectivity... done.
    Submodule path 'src/mps': checked out '3e6640e7eeb5d086adec18e6227a84da59898e1c'
    Unable to checkout '280c12ab49223c64c6f914944287a7d049cf4dd0' in submodule path 'src/lisp/kernel/contrib/sicl'
    

    As you can see, the reproduction recipe does not touch the sicl submodule. So, my best guess is that the clasp Git repository has a spurious reference to 280c12ab49223c64c6f914944287a7d049cf4dd0 somewhere inside it. The folks on #git also seemed to think this was plausible. As you can see, the reproduction recipe does not touch the sicl submodule. So, how best to resolve this problem? What kind of surgery is required for the clasp Git repository?

    NOTE: the problem does not show up without the git checkout tags/0.3-test-3 step. So the problem is presumably in that particular branch, here fixnum.