Re: [BUG] `git reset --hard` fails with `update = none` submodules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If I set `submodule.recurse = false` in .git/config, I get the
behavior you're seeing.

On Tue, Jun 15, 2021 at 6:03 PM Rose Kunkel <rose@xxxxxxxxxxxxx> wrote:
>
> Potentially relevant: `git config --global --list` shows
> ```
> status.showstash=true
> status.submodulesummary=true
> submodule.recurse=true
> user.name=Rose Kunkel
> user.email=rose@xxxxxxxxxxxxx
> pull.rebase=false
> init.defaultbranch=main
> ```
>
> On Tue, Jun 15, 2021 at 5:57 PM Rose Kunkel <rose@xxxxxxxxxxxxx> wrote:
> >
> > Running `git status` in the resulting repository gives
> > ```
> > On branch master
> > Your branch is up to date with 'origin/master'.
> >
> > nothing to commit, working tree clean
> > ```
> >
> > This is the output from the clone command:
> > ```
> > Cloning into 'tree-sitter-langs'...
> > remote: Enumerating objects: 609, done.
> > remote: Counting objects: 100% (83/83), done.
> > remote: Compressing objects: 100% (52/52), done.
> > remote: Total 609 (delta 40), reused 58 (delta 24), pack-reused 526
> > Receiving objects: 100% (609/609), 117.17 KiB | 1.05 MiB/s, done.
> > Resolving deltas: 100% (322/322), done.
> > Submodule 'repos/agda'
> > (https://github.com/tree-sitter/tree-sitter-agda) registered for path
> > 'repos/agda'
> > Submodule 'repos/bash'
> > (https://github.com/tree-sitter/tree-sitter-bash) registered for path
> > 'repos/bash'
> > Submodule 'repos/c' (https://github.com/tree-sitter/tree-sitter-c)
> > registered for path 'repos/c'
> > Submodule 'repos/c-sharp'
> > (https://github.com/tree-sitter/tree-sitter-c-sharp) registered for
> > path 'repos/c-sharp'
> > Submodule 'repos/cpp' (https://github.com/tree-sitter/tree-sitter-cpp)
> > registered for path 'repos/cpp'
> > Submodule 'repos/css' (https://github.com/tree-sitter/tree-sitter-css)
> > registered for path 'repos/css'
> > Submodule 'repos/elm' (https://github.com/razzeee/tree-sitter-elm)
> > registered for path 'repos/elm'
> > Submodule 'repos/fluent'
> > (https://github.com/tree-sitter/tree-sitter-fluent) registered for
> > path 'repos/fluent'
> > Submodule 'repos/go' (https://github.com/tree-sitter/tree-sitter-go)
> > registered for path 'repos/go'
> > Submodule 'repos/html'
> > (https://github.com/tree-sitter/tree-sitter-html) registered for path
> > 'repos/html'
> > Submodule 'repos/janet-simple'
> > (https://codeberg.org/sogaiu/tree-sitter-janet-simple) registered for
> > path 'repos/janet-simple'
> > Submodule 'repos/java'
> > (https://github.com/tree-sitter/tree-sitter-java) registered for path
> > 'repos/java'
> > Submodule 'repos/javascript'
> > (https://github.com/tree-sitter/tree-sitter-javascript) registered for
> > path 'repos/javascript'
> > Submodule 'repos/jsdoc'
> > (https://github.com/tree-sitter/tree-sitter-jsdoc) registered for path
> > 'repos/jsdoc'
> > Submodule 'repos/json'
> > (https://github.com/tree-sitter/tree-sitter-json) registered for path
> > 'repos/json'
> > Submodule 'repos/julia'
> > (https://github.com/tree-sitter/tree-sitter-julia) registered for path
> > 'repos/julia'
> > Submodule 'repos/ocaml'
> > (https://github.com/tree-sitter/tree-sitter-ocaml) registered for path
> > 'repos/ocaml'
> > Submodule 'repos/php' (https://github.com/tree-sitter/tree-sitter-php)
> > registered for path 'repos/php'
> > Submodule 'repos/python'
> > (https://github.com/tree-sitter/tree-sitter-python) registered for
> > path 'repos/python'
> > Submodule 'repos/ruby'
> > (https://github.com/tree-sitter/tree-sitter-ruby) registered for path
> > 'repos/ruby'
> > Submodule 'repos/rust'
> > (https://github.com/tree-sitter/tree-sitter-rust) registered for path
> > 'repos/rust'
> > Submodule 'repos/scala'
> > (https://github.com/tree-sitter/tree-sitter-scala) registered for path
> > 'repos/scala'
> > Submodule 'repos/swift'
> > (https://github.com/tree-sitter/tree-sitter-swift) registered for path
> > 'repos/swift'
> > Submodule 'repos/typescript'
> > (https://github.com/tree-sitter/tree-sitter-typescript) registered for
> > path 'repos/typescript'
> > Skipping submodule 'repos/agda'
> > Skipping submodule 'repos/bash'
> > Skipping submodule 'repos/c'
> > Skipping submodule 'repos/c-sharp'
> > Skipping submodule 'repos/cpp'
> > Skipping submodule 'repos/css'
> > Skipping submodule 'repos/elm'
> > Skipping submodule 'repos/fluent'
> > Skipping submodule 'repos/go'
> > Skipping submodule 'repos/html'
> > Skipping submodule 'repos/janet-simple'
> > Skipping submodule 'repos/java'
> > Skipping submodule 'repos/javascript'
> > Skipping submodule 'repos/jsdoc'
> > Skipping submodule 'repos/json'
> > Skipping submodule 'repos/julia'
> > Skipping submodule 'repos/ocaml'
> > Skipping submodule 'repos/php'
> > Skipping submodule 'repos/python'
> > Skipping submodule 'repos/ruby'
> > Skipping submodule 'repos/rust'
> > Skipping submodule 'repos/scala'
> > Skipping submodule 'repos/swift'
> > Skipping submodule 'repos/typescript'
> > ```
> >
> > On Tue, Jun 15, 2021 at 5:51 PM brian m. carlson
> > <sandals@xxxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > On 2021-06-16 at 00:16:06, Rose Kunkel wrote:
> > > > # What did you do before the bug happened? (Steps to reproduce your issue)
> > > > 1. Clone a git repository that sets `update = none` in .gitmodules:
> > > > $ git clone --recurse-submodules https://github.com/ubolonton/tree-sitter-langs
> > > >
> > > > 2. Perform a hard reset:
> > > > $ cd tree-sitter-langs
> > > > $ git reset --hard
> > > >
> > > > # What did you expect to happen? (Expected behavior)
> > > > The reset should succeed and do nothing.
> > >
> > > I think we're in agreement on this.  This should be a fresh clone and so
> > > a hard reset should change nothing.
> > >
> > > > # What happened instead? (Actual behavior)
> > > > The reset command fails with
> > > > ```
> > > > fatal: not a git repository: ../../.git/modules/repos/agda
> > > > fatal: could not reset submodule index
> > > > ```
> > >
> > > Hmmm, I can't reproduce this behavior.  What I see is this:
> > >
> > >   $ git reset --hard
> > >   HEAD is now at 5d362ce Release 0.10.0
> > >
> > > I'm running git version 2.32.0.272.g935e593368 on Debian sid (with the
> > > experimental packages).
> > >
> > > Can you try the clone and run a "git status" command in the repository
> > > to see if anything is modified after your clone?  Are the submodules
> > > checked out when you perform the clone?  In my case, I see lines like
> > > this:
> > >
> > >   Skipping submodule 'repos/agda'
> > >
> > > If you're seeing something different, then that might contribute to the
> > > different behavior we're seeing.
> > > --
> > > brian m. carlson (he/him or they/them)
> > > Toronto, Ontario, CA



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux