threads / bug / 37373

[BUG] Hang when I did something a bit weird with submodules

Subject: [BUG] Hang when I did something a bit weird with submodules

## tl;dr

3 messages between Aug 19, 2014 and Sep 3, 2014.

replies: 2people: 1as markdown or json

Chris Packham· Aug 19, 2014, 04:33 UTC · lore
Hi,

I was just setting up a new project using submodules and have run into what appears to be a hang when git status is invoked. I haven't tried to reproduce this but this is basically what I did (edited highlights from my bash_history).

 $ git --version
 git version 2.0.3
 $ mkdir proj
 $ cd proj
 $ git init
 $ git submodule add <internal-repo-with-build-scripts> build
 $ git submodule add --reference ~/src/linux/.git
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux
 # I'm not sure if the --reference is relevant but I was just wanting
to cut down on my network transfer
 $ git submodule add <internal-repo-with-skeleton-fs> rootfs

Oops I really wanted linux-stable to get the same version my board vendor is using

 $ vim .gitmodules
 # change to linux-stable
 $ git submodule sync

I'm not sure if this is a valid use-case but nothing complained that I was changing the URL. In theory linux-stable should be a super-set of linus' tree so the repositories are basically equivalent.

 $ cd linux/
 $ git remote show origin
 * remote origin
   Fetch URL: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
 # Seems to have done the trick
 $ git reset --hard v3.4.69

I suspect this is where the problem starts. When I did the git submodule add it was pointing at the tip of linus' tree. Now I have rewound considerably.

 $ git status
 [hang]
For what it's worth here's the output when I run with GIT_TRACE=1 git status

trace: built-in: git 'status' trace: run_command: 'status' '--porcelain' trace: exec: 'git' 'status' '--porcelain' trace: built-in: git 'status' '--porcelain' trace: run_command: 'status' '--porcelain' trace: exec: 'git' 'status' '--porcelain' trace: built-in: git 'status' '--porcelain' trace: run_command: 'status' '--porcelain' trace: exec: 'git' 'status' '--porcelain' trace: built-in: git 'status' '--porcelain' On branch master

Initial commit
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   .gitmodules
        new file:   rootfs
        new file:   build
        new file:   linux
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   .gitmodules
        modified:   linux (new commits)

trace: run_command: 'submodule' 'summary' '--cached' '--for-status' '--summary-limit' '-1' 'HEAD' trace: exec: 'git' 'submodule' 'summary' '--cached' '--for-status' '--summary-limit' '-1' 'HEAD' trace: exec: 'git-submodule' 'summary' '--cached' '--for-status' '--summary-limit' '-1' 'HEAD' trace: run_command: 'git-submodule' 'summary' '--cached' '--for-status' '--summary-limit' '-1' 'HEAD' trace: built-in: git 'rev-parse' '--git-dir' trace: built-in: git 'rev-parse' '-q' '--git-dir' trace: built-in: git 'rev-parse' '--show-prefix' trace: built-in: git 'rev-parse' '--show-toplevel' trace: built-in: git 'rev-parse' '-q' '--verify' '--default' 'HEAD' 'HEAD' trace: built-in: git 'hash-object' '-w' '-t' 'tree' '--stdin' trace: built-in: git 'rev-parse' '--show-toplevel' trace: built-in: git 'rev-parse' '--sq' '--prefix' '' '--' trace: built-in: git 'diff-index' '--cached' '--ignore-submodules=dirty' '--raw' '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--' trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp' '^submodule\..*\.path$' trace: built-in: git 'config' 'submodule.rootfs.ignore' trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.rootfs.ignore' trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp' '^submodule\..*\.path$' trace: built-in: git 'config' 'submodule.build.ignore' trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.build.ignore' trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp' '^submodule\..*\.path$' trace: built-in: git 'config' 'submodule.linux.ignore' trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.linux.ignore' trace: built-in: git 'diff-index' '--cached' '--ignore-submodules=dirty' '--raw' '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--' 'rootfs' 'build' 'linux' trace: built-in: git 'rev-parse' '-q' '--verify' 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1^0' trace: built-in: git 'rev-list' '--first-parent' 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1' '--' trace: built-in: git 'log' '--pretty=format: > %s' '-1' 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1' trace: built-in: git 'rev-parse' '-q' '--verify' '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c^0' trace: built-in: git 'rev-list' '--first-parent' '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c' '--' trace: built-in: git 'log' '--pretty=format: > %s' '-1' '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c' trace: built-in: git 'rev-parse' '-q' '--verify' '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9^0' trace: built-in: git 'rev-list' '--first-parent' '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9' '--' trace: built-in: git 'log' '--pretty=format: > %s' '-1' '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9' Submodule changes to be committed:

* rootfs 0000000...e4bbdf3 (249):
  > Merge remote-tracking branch 'tomahawk/delivery_545_icmp'
* build 0000000...9f2d165 (771):
  > Merge remote-tracking branch 'plusplus/3rdparty'
* linux 0000000...7d1311b (46122):
  > Linux 3.17-rc1

trace: run_command: 'submodule' 'summary' '--files' '--for-status' '--summary-limit' '-1' trace: exec: 'git' 'submodule' 'summary' '--files' '--for-status' '--summary-limit' '-1' trace: exec: 'git-submodule' 'summary' '--files' '--for-status' '--summary-limit' '-1' trace: run_command: 'git-submodule' 'summary' '--files' '--for-status' '--summary-limit' '-1' trace: built-in: git 'rev-parse' '--git-dir' trace: built-in: git 'rev-parse' '-q' '--git-dir' trace: built-in: git 'rev-parse' '--show-prefix' trace: built-in: git 'rev-parse' '--show-toplevel' trace: built-in: git 'rev-parse' '-q' '--verify' '--default' 'HEAD' trace: built-in: git 'hash-object' '-w' '-t' 'tree' '--stdin' trace: built-in: git 'rev-parse' '--show-toplevel' trace: built-in: git 'rev-parse' '--sq' '--prefix' '' '--' trace: built-in: git 'diff-files' '--ignore-submodules=dirty' '--raw' '--' trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp' '^submodule\..*\.path$' trace: built-in: git 'config' 'submodule.linux.ignore' trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.linux.ignore' trace: built-in: git 'diff-files' '--ignore-submodules=dirty' '--raw' '--' 'linux' trace: built-in: git 'rev-parse' 'HEAD' trace: built-in: git 'rev-parse' '-q' '--verify' '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9^0' trace: built-in: git 'rev-parse' '-q' '--verify' '14aa272fcd1cdbe7173073250c767bc7a37278ce^0' trace: built-in: git 'rev-list' '--first-parent' '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9...14aa272fcd1cdbe7173073250c767bc7a37278ce' '--' trace: built-in: git 'log' '--pretty=format: %m %s' '--first-parent' '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9...14aa272fcd1cdbe7173073250c767bc7a37278ce' ^C

Chris Packham· Aug 19, 2014, 04:35 UTC · re: Chris Packham · lore

Re: [BUG] Hang when I did something a bit weird with submodules

On Tue, Aug 19, 2014 at 4:33 PM, Chris Packham <judge.packham@gmail.com> wrote:
Show 173 quoted lines
> Hi,
>
> I was just setting up a new project using submodules and have run into
> what appears to be a hang when git status is invoked. I haven't tried
> to reproduce this but this is basically what I did (edited highlights
> from my bash_history).
>
>  $ git --version
>  git version 2.0.3
>  $ mkdir proj
>  $ cd proj
>  $ git init
>  $ git submodule add <internal-repo-with-build-scripts> build
>  $ git submodule add --reference ~/src/linux/.git
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux
>  # I'm not sure if the --reference is relevant but I was just wanting
> to cut down on my network transfer
>  $ git submodule add <internal-repo-with-skeleton-fs> rootfs
>
> Oops I really wanted linux-stable to get the same version my board
> vendor is using
>
>  $ vim .gitmodules
>  # change to linux-stable
>  $ git submodule sync
>
> I'm not sure if this is a valid use-case but nothing complained that I
> was changing the URL. In theory linux-stable should be a super-set of
> linus' tree so the repositories are basically equivalent.
>
>  $ cd linux/
>  $ git remote show origin
>  * remote origin
>    Fetch URL: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
>  # Seems to have done the trick
>  $ git reset --hard v3.4.69
>
> I suspect this is where the problem starts. When I did the git
> submodule add it was pointing at the tip of linus' tree. Now I have
> rewound considerably.
>
>  $ git status
>  [hang]
>
> For what it's worth here's the output when I run with GIT_TRACE=1 git status
>
> trace: built-in: git 'status'
> trace: run_command: 'status' '--porcelain'
> trace: exec: 'git' 'status' '--porcelain'
> trace: built-in: git 'status' '--porcelain'
> trace: run_command: 'status' '--porcelain'
> trace: exec: 'git' 'status' '--porcelain'
> trace: built-in: git 'status' '--porcelain'
> trace: run_command: 'status' '--porcelain'
> trace: exec: 'git' 'status' '--porcelain'
> trace: built-in: git 'status' '--porcelain'
> On branch master
>
> Initial commit
>
> Changes to be committed:
>   (use "git rm --cached <file>..." to unstage)
>
>         new file:   .gitmodules
>         new file:   rootfs
>         new file:   build
>         new file:   linux
>
> Changes not staged for commit:
>   (use "git add <file>..." to update what will be committed)
>   (use "git checkout -- <file>..." to discard changes in working directory)
>
>         modified:   .gitmodules
>         modified:   linux (new commits)
>
> trace: run_command: 'submodule' 'summary' '--cached' '--for-status'
> '--summary-limit' '-1' 'HEAD'
> trace: exec: 'git' 'submodule' 'summary' '--cached' '--for-status'
> '--summary-limit' '-1' 'HEAD'
> trace: exec: 'git-submodule' 'summary' '--cached' '--for-status'
> '--summary-limit' '-1' 'HEAD'
> trace: run_command: 'git-submodule' 'summary' '--cached'
> '--for-status' '--summary-limit' '-1' 'HEAD'
> trace: built-in: git 'rev-parse' '--git-dir'
> trace: built-in: git 'rev-parse' '-q' '--git-dir'
> trace: built-in: git 'rev-parse' '--show-prefix'
> trace: built-in: git 'rev-parse' '--show-toplevel'
> trace: built-in: git 'rev-parse' '-q' '--verify' '--default' 'HEAD' 'HEAD'
> trace: built-in: git 'hash-object' '-w' '-t' 'tree' '--stdin'
> trace: built-in: git 'rev-parse' '--show-toplevel'
> trace: built-in: git 'rev-parse' '--sq' '--prefix' '' '--'
> trace: built-in: git 'diff-index' '--cached'
> '--ignore-submodules=dirty' '--raw'
> '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--'
> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
> '^submodule\..*\.path$'
> trace: built-in: git 'config' 'submodule.rootfs.ignore'
> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.rootfs.ignore'
> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
> '^submodule\..*\.path$'
> trace: built-in: git 'config' 'submodule.build.ignore'
> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.build.ignore'
> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
> '^submodule\..*\.path$'
> trace: built-in: git 'config' 'submodule.linux.ignore'
> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.linux.ignore'
> trace: built-in: git 'diff-index' '--cached'
> '--ignore-submodules=dirty' '--raw'
> '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--' 'rootfs' 'build'
> 'linux'
> trace: built-in: git 'rev-parse' '-q' '--verify'
> 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1^0'
> trace: built-in: git 'rev-list' '--first-parent'
> 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1' '--'
> trace: built-in: git 'log' '--pretty=format:  > %s' '-1'
> 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1'
> trace: built-in: git 'rev-parse' '-q' '--verify'
> '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c^0'
> trace: built-in: git 'rev-list' '--first-parent'
> '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c' '--'
> trace: built-in: git 'log' '--pretty=format:  > %s' '-1'
> '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c'
> trace: built-in: git 'rev-parse' '-q' '--verify'
> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9^0'
> trace: built-in: git 'rev-list' '--first-parent'
> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9' '--'
> trace: built-in: git 'log' '--pretty=format:  > %s' '-1'
> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9'
> Submodule changes to be committed:
>
> * rootfs 0000000...e4bbdf3 (249):
>   > Merge remote-tracking branch 'tomahawk/delivery_545_icmp'
>
> * build 0000000...9f2d165 (771):
>   > Merge remote-tracking branch 'plusplus/3rdparty'
>
> * linux 0000000...7d1311b (46122):
>   > Linux 3.17-rc1
>
> trace: run_command: 'submodule' 'summary' '--files' '--for-status'
> '--summary-limit' '-1'
> trace: exec: 'git' 'submodule' 'summary' '--files' '--for-status'
> '--summary-limit' '-1'
> trace: exec: 'git-submodule' 'summary' '--files' '--for-status'
> '--summary-limit' '-1'
> trace: run_command: 'git-submodule' 'summary' '--files' '--for-status'
> '--summary-limit' '-1'
> trace: built-in: git 'rev-parse' '--git-dir'
> trace: built-in: git 'rev-parse' '-q' '--git-dir'
> trace: built-in: git 'rev-parse' '--show-prefix'
> trace: built-in: git 'rev-parse' '--show-toplevel'
> trace: built-in: git 'rev-parse' '-q' '--verify' '--default' 'HEAD'
> trace: built-in: git 'hash-object' '-w' '-t' 'tree' '--stdin'
> trace: built-in: git 'rev-parse' '--show-toplevel'
> trace: built-in: git 'rev-parse' '--sq' '--prefix' '' '--'
> trace: built-in: git 'diff-files' '--ignore-submodules=dirty' '--raw' '--'
> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
> '^submodule\..*\.path$'
> trace: built-in: git 'config' 'submodule.linux.ignore'
> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.linux.ignore'
> trace: built-in: git 'diff-files' '--ignore-submodules=dirty' '--raw'
> '--' 'linux'
> trace: built-in: git 'rev-parse' 'HEAD'
> trace: built-in: git 'rev-parse' '-q' '--verify'
> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9^0'
> trace: built-in: git 'rev-parse' '-q' '--verify'
> '14aa272fcd1cdbe7173073250c767bc7a37278ce^0'
> trace: built-in: git 'rev-list' '--first-parent'
> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9...14aa272fcd1cdbe7173073250c767bc7a37278ce'
> '--'
> trace: built-in: git 'log' '--pretty=format:  %m %s' '--first-parent'
> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9...14aa272fcd1cdbe7173073250c767bc7a37278ce'
> ^C
Update: I've managed to restore normal operation with 'git add -u' in
the super project. Which gets me back to a working state.
Chris Packham· Sep 3, 2014, 02:26 UTC · re: Chris Packham · lore

Re: [BUG] Hang when I did something a bit weird with submodules

On Tue, Aug 19, 2014 at 4:35 PM, Chris Packham <judge.packham@gmail.com> wrote:
Show 177 quoted lines
> On Tue, Aug 19, 2014 at 4:33 PM, Chris Packham <judge.packham@gmail.com> wrote:
>> Hi,
>>
>> I was just setting up a new project using submodules and have run into
>> what appears to be a hang when git status is invoked. I haven't tried
>> to reproduce this but this is basically what I did (edited highlights
>> from my bash_history).
>>
>>  $ git --version
>>  git version 2.0.3
>>  $ mkdir proj
>>  $ cd proj
>>  $ git init
>>  $ git submodule add <internal-repo-with-build-scripts> build
>>  $ git submodule add --reference ~/src/linux/.git
>> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux
>>  # I'm not sure if the --reference is relevant but I was just wanting
>> to cut down on my network transfer
>>  $ git submodule add <internal-repo-with-skeleton-fs> rootfs
>>
>> Oops I really wanted linux-stable to get the same version my board
>> vendor is using
>>
>>  $ vim .gitmodules
>>  # change to linux-stable
>>  $ git submodule sync
>>
>> I'm not sure if this is a valid use-case but nothing complained that I
>> was changing the URL. In theory linux-stable should be a super-set of
>> linus' tree so the repositories are basically equivalent.
>>
>>  $ cd linux/
>>  $ git remote show origin
>>  * remote origin
>>    Fetch URL: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
>>  # Seems to have done the trick
>>  $ git reset --hard v3.4.69
>>
>> I suspect this is where the problem starts. When I did the git
>> submodule add it was pointing at the tip of linus' tree. Now I have
>> rewound considerably.
>>
>>  $ git status
>>  [hang]
>>
>> For what it's worth here's the output when I run with GIT_TRACE=1 git status
>>
>> trace: built-in: git 'status'
>> trace: run_command: 'status' '--porcelain'
>> trace: exec: 'git' 'status' '--porcelain'
>> trace: built-in: git 'status' '--porcelain'
>> trace: run_command: 'status' '--porcelain'
>> trace: exec: 'git' 'status' '--porcelain'
>> trace: built-in: git 'status' '--porcelain'
>> trace: run_command: 'status' '--porcelain'
>> trace: exec: 'git' 'status' '--porcelain'
>> trace: built-in: git 'status' '--porcelain'
>> On branch master
>>
>> Initial commit
>>
>> Changes to be committed:
>>   (use "git rm --cached <file>..." to unstage)
>>
>>         new file:   .gitmodules
>>         new file:   rootfs
>>         new file:   build
>>         new file:   linux
>>
>> Changes not staged for commit:
>>   (use "git add <file>..." to update what will be committed)
>>   (use "git checkout -- <file>..." to discard changes in working directory)
>>
>>         modified:   .gitmodules
>>         modified:   linux (new commits)
>>
>> trace: run_command: 'submodule' 'summary' '--cached' '--for-status'
>> '--summary-limit' '-1' 'HEAD'
>> trace: exec: 'git' 'submodule' 'summary' '--cached' '--for-status'
>> '--summary-limit' '-1' 'HEAD'
>> trace: exec: 'git-submodule' 'summary' '--cached' '--for-status'
>> '--summary-limit' '-1' 'HEAD'
>> trace: run_command: 'git-submodule' 'summary' '--cached'
>> '--for-status' '--summary-limit' '-1' 'HEAD'
>> trace: built-in: git 'rev-parse' '--git-dir'
>> trace: built-in: git 'rev-parse' '-q' '--git-dir'
>> trace: built-in: git 'rev-parse' '--show-prefix'
>> trace: built-in: git 'rev-parse' '--show-toplevel'
>> trace: built-in: git 'rev-parse' '-q' '--verify' '--default' 'HEAD' 'HEAD'
>> trace: built-in: git 'hash-object' '-w' '-t' 'tree' '--stdin'
>> trace: built-in: git 'rev-parse' '--show-toplevel'
>> trace: built-in: git 'rev-parse' '--sq' '--prefix' '' '--'
>> trace: built-in: git 'diff-index' '--cached'
>> '--ignore-submodules=dirty' '--raw'
>> '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--'
>> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
>> '^submodule\..*\.path$'
>> trace: built-in: git 'config' 'submodule.rootfs.ignore'
>> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.rootfs.ignore'
>> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
>> '^submodule\..*\.path$'
>> trace: built-in: git 'config' 'submodule.build.ignore'
>> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.build.ignore'
>> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
>> '^submodule\..*\.path$'
>> trace: built-in: git 'config' 'submodule.linux.ignore'
>> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.linux.ignore'
>> trace: built-in: git 'diff-index' '--cached'
>> '--ignore-submodules=dirty' '--raw'
>> '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--' 'rootfs' 'build'
>> 'linux'
>> trace: built-in: git 'rev-parse' '-q' '--verify'
>> 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1^0'
>> trace: built-in: git 'rev-list' '--first-parent'
>> 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1' '--'
>> trace: built-in: git 'log' '--pretty=format:  > %s' '-1'
>> 'e4bbdf3b45828a2e9ca37ef329b8e708e324dfb1'
>> trace: built-in: git 'rev-parse' '-q' '--verify'
>> '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c^0'
>> trace: built-in: git 'rev-list' '--first-parent'
>> '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c' '--'
>> trace: built-in: git 'log' '--pretty=format:  > %s' '-1'
>> '9f2d1659df78ea51eaa9ad5e7af9271996ac2a4c'
>> trace: built-in: git 'rev-parse' '-q' '--verify'
>> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9^0'
>> trace: built-in: git 'rev-list' '--first-parent'
>> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9' '--'
>> trace: built-in: git 'log' '--pretty=format:  > %s' '-1'
>> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9'
>> Submodule changes to be committed:
>>
>> * rootfs 0000000...e4bbdf3 (249):
>>   > Merge remote-tracking branch 'tomahawk/delivery_545_icmp'
>>
>> * build 0000000...9f2d165 (771):
>>   > Merge remote-tracking branch 'plusplus/3rdparty'
>>
>> * linux 0000000...7d1311b (46122):
>>   > Linux 3.17-rc1
>>
>> trace: run_command: 'submodule' 'summary' '--files' '--for-status'
>> '--summary-limit' '-1'
>> trace: exec: 'git' 'submodule' 'summary' '--files' '--for-status'
>> '--summary-limit' '-1'
>> trace: exec: 'git-submodule' 'summary' '--files' '--for-status'
>> '--summary-limit' '-1'
>> trace: run_command: 'git-submodule' 'summary' '--files' '--for-status'
>> '--summary-limit' '-1'
>> trace: built-in: git 'rev-parse' '--git-dir'
>> trace: built-in: git 'rev-parse' '-q' '--git-dir'
>> trace: built-in: git 'rev-parse' '--show-prefix'
>> trace: built-in: git 'rev-parse' '--show-toplevel'
>> trace: built-in: git 'rev-parse' '-q' '--verify' '--default' 'HEAD'
>> trace: built-in: git 'hash-object' '-w' '-t' 'tree' '--stdin'
>> trace: built-in: git 'rev-parse' '--show-toplevel'
>> trace: built-in: git 'rev-parse' '--sq' '--prefix' '' '--'
>> trace: built-in: git 'diff-files' '--ignore-submodules=dirty' '--raw' '--'
>> trace: built-in: git 'config' '-f' '.gitmodules' '--get-regexp'
>> '^submodule\..*\.path$'
>> trace: built-in: git 'config' 'submodule.linux.ignore'
>> trace: built-in: git 'config' '-f' '.gitmodules' 'submodule.linux.ignore'
>> trace: built-in: git 'diff-files' '--ignore-submodules=dirty' '--raw'
>> '--' 'linux'
>> trace: built-in: git 'rev-parse' 'HEAD'
>> trace: built-in: git 'rev-parse' '-q' '--verify'
>> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9^0'
>> trace: built-in: git 'rev-parse' '-q' '--verify'
>> '14aa272fcd1cdbe7173073250c767bc7a37278ce^0'
>> trace: built-in: git 'rev-list' '--first-parent'
>> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9...14aa272fcd1cdbe7173073250c767bc7a37278ce'
>> '--'
>> trace: built-in: git 'log' '--pretty=format:  %m %s' '--first-parent'
>> '7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9...14aa272fcd1cdbe7173073250c767bc7a37278ce'
>> ^C
>
> Update: I've managed to restore normal operation with 'git add -u' in
> the super project. Which gets me back to a working state.
OK I've got a (relatively) simple way of reproducing this.
  git --version
  git version 2.0.3
  mkdir temp
  cd temp/
  git init
  git submodule add git://git.denx.de/u-boot.git u-boot
  cd u-boot/
  git reset --hard v2013.01
  cd ../
  git status
  <hang>

It seems to depend on how far I go back. I tried v2014.07 (~600 commits), v2014.01 (~2500 commits) and v2013.10 (~3600 commits). It wasn't until I went to v2013.07 (~4300 commits) that I struck the hang.

Doing some further digging If I reset to commit 25634210af785e36cf73a5e9a103c8cac5d84a26 there is no hang. But if I reset to commit 012a2c15d781d327c9de8734f2b2b3f793a58724 there is a hang. These 2 commits are adjacent and as far as I can tell there's nothing special about them (they're just normal commits, not merges).

← back to recent threads