[Buildroot] [PATCH 3/4] download/git: ensure we can checkout repos with submodule conversions

Arnout Vandecappelle arnout at mind.be
Wed Apr 18 08:04:53 UTC 2018



On 18-04-18 05:13, Ricardo Martincoski wrote:
> Hello,
> 
> Really sorry I did finished the review/tests today to send by tags.
> 
> Could you double-check the --force option for git 1.7.1? I am not sure we would
> have a workaround for this if it is not supported.

 The help of 1.7.1 says:

git submodule [--quiet] update [--init] [-N|--no-fetch] [--rebase] [--reference
<repository>] [--merge] [--recursive] [--] [<path>...]

No force there... Checking the code, I don't see any handling of -f or --force.

> Also a question and some typos.
> 
> On Tue, Apr 17, 2018 at 01:48 PM, Yann E. MORIN wrote:
[snip]
>> +# files after the checkout.
>> +find . -type f -name .git -exec rm {} +
> 
> In the unlikely case some user tries to abuse the git cache by first populating
> it using the 'git multiple working trees' feature the main
> dl/<package>/git/.git would be a file too. After this command all git commands
> will fail.
> But... well... that is expected! The user should not mess with the git cache,
> it is there to be used solely by buildroot.
> So we are good IMO.

 +1

 That said, IMO it would be better if the git cache were a bare repo, and that
we did the checkout outside of the repo. But I don't think that works well with
submodules. Submodules are annoying...

> 
>> +
>> +# Restore repository to the new, clean-checkout state.
>> +_git clean -ffdx
>> +_git checkout -- .
> 
> So it is needed to checkout the .git files again? Or did I miss something?

 I'm missing the point as well. Clearly needs a comment :-)

> 
> Long time since I developed using submodules, so I now forgot some catches.
> Anyway I will play with those commands tomorrow to try to understand.
> 
> [snip]
>> -    _git submodule update --init --recursive
>> +    _git submodule update --init --recursive --force
> 
> It seems --force does not exist on git 1.7.1.
> It is still possible I did something wrong when creating the docker image.
> https://gitlab.com/RicardoMartincoski/buildroot/-/jobs/63519024

 No, it doesn't exist.

 Note that git 1.7.1 also doesn't have the .git files in the submodules; the
submodules have .git directories, i.e. they're indistinguishable from normal
repos. I think that that is not a problem for this patch, since I think git
1.7.1 *will* kill .git directories when doing git clean --ffdx, but I'm not
sure. Note that this implies that submodules will *not* be cached...

 I'm liking the bare repos more and more :-)

 Regards,
 Arnout

> It does work for git 1.8.3.
> https://gitlab.com/RicardoMartincoski/buildroot/-/jobs/63525858
> 
> 
> Regards,
> Ricardo
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF


More information about the buildroot mailing list