threads / discuss / 46939

Branch switching with submodules where the submodule replaces a folder aborts unexpectedly

Subject: Branch switching with submodules where the submodule replaces a folder aborts unexpectedly

## tl;dr

3 messages between Oct 9, 2017 and Oct 12, 2017.

replies: 2people: 2as markdown or json

Thomas Braun· Oct 9, 2017, 21:29 UTC · lore
Hi,
I'm currently in the progress of pulling some subprojects in a git repository of mine into their own repositories and adding these subprojects back as submodules.
While doing this I enountered a potential bug as checkout complains on branch switching that a file already exists.
I've reproduced it on debian stretch with the following git versions:

master: git version 2.15.0.rc0.39.g2f0e14e649 pu: git version 2.15.0.rc0.245.g6d586db062

A script to trigger it is

mkdir -p test/subproject cd test git init touch subproject/1 git add subproject git commit -m "blah" cd .. mkdir subproject cd subproject git init touch 1 git add 1 git commit -m "blubb" cd ../test git branch old git rm -rf subproject git commit -m "remove blah" git submodule add ../subproject git add -A git commit -m "added subproject" git branch new git checkout old

and this fails with 
$LANG=C ./run.sh 
Initialized empty Git repository in /home/XXX/devel/test/.git/
[master (root-commit) 33e6607] blah
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 subproject/1
Initialized empty Git repository in /home/XXX/devel/subproject/.git/
[master (root-commit) e817644] blubb
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1
rm 'subproject/1'
[master 9cbfd57] remove blah
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 subproject/1
Cloning into '/home/XXX/devel/test/subproject'...
done.
[master 1c67e23] added subproject
 2 files changed, 4 insertions(+)
 create mode 100644 .gitmodules
 create mode 160000 subproject
error: The following untracked working tree files would be overwritten by checkout:
        subproject/1
Please move or remove them before you switch branches.
Aborting
If I'm misusing git here I'm glad for any advice.

Thanks, Thomas

Stefan Beller· Oct 9, 2017, 21:59 UTC · re: Thomas Braun · lore

Re: Branch switching with submodules where the submodule replaces a folder aborts unexpectedly

On Mon, Oct 9, 2017 at 2:29 PM, Thomas Braun <thomas.braun@virtuell-zuhause.de> wrote:

Show 5 quoted lines
> Hi,
>
> I'm currently in the progress of pulling some subprojects in a git repository of mine into their own repositories and adding these subprojects back as submodules.
>
> While doing this I enountered a potential bug as checkout complains on branch switching that a file already exists.
(And I presume you know about --recurse-submodules as a flag for git-checkout)
This is consistent with our tests, unfortunately.

git/t$ ./t2013-checkout-submodule.sh ... not ok 15 - git checkout --recurse-submodules: replace submodule with a directory # TODO known breakage ...

> If I'm misusing git here I'm glad for any advice.
You are not.

Apart from this bug report, would you think that such filtering of trees into submodules (and back again) might be an interesting feature of Git or are these cases rare and special?

Thanks, Stefan

Thomas Braun· Oct 12, 2017, 11:48 UTC · re: Stefan Beller · lore

Re: Branch switching with submodules where the submodule replaces a folder aborts unexpectedly

Show 14 quoted lines
> Stefan Beller <sbeller@google.com> hat am 9. Oktober 2017 um 23:59 geschrieben:
> 
> 
> On Mon, Oct 9, 2017 at 2:29 PM, Thomas Braun
> <thomas.braun@virtuell-zuhause.de> wrote:
> > Hi,
> >
> > I'm currently in the progress of pulling some subprojects in a git repository of mine into their
> > own repositories and adding these subprojects back as submodules.
> >
> > While doing this I enountered a potential bug as checkout complains on branch switching that a 
> > file already exists.
> 
> (And I presume you know about --recurse-submodules as a flag for git-checkout)
No I did not know about it. I tend to not know options which don't complete in my shell (patch follows for that).
Show 11 quoted lines
> This is consistent with our tests, unfortunately.
> 
> git/t$ ./t2013-checkout-submodule.sh
> ...
> not ok 15 - git checkout --recurse-submodules: replace submodule with
> a directory # TODO known breakage
> ...
> 
> > If I'm misusing git here I'm glad for any advice.
> 
> You are not.
Glad to know that.
> Apart from this bug report, would you think that such filtering of
> trees into submodules (and back again) might be an interesting feature
> of Git or are these cases rare and special?
For me not particularly. In my case it is a one time thing going from an embedded project folder to a submodule.

← back to recent threads