From: Peter Korsgaard <peter@korsgaard.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/4 v3] support/download/git: do not use bare clones
Date: Sat, 02 Jul 2016 18:42:19 +0200 [thread overview]
Message-ID: <87d1mw56vo.fsf@dell.be.48ers.dk> (raw)
In-Reply-To: <da17e97529b50cc248af7cebae706909eac19532.1467363623.git.yann.morin.1998@free.fr> (Yann E. MORIN's message of "Fri, 1 Jul 2016 11:01:16 +0200")
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
> Currently, we are using bare clones, so as to minimise the disk usage,
> most notably for largeish repositories such as the one for the Linux
> kernel, which can go beyond the 1GiB barrier.
> However, this precludes updating (and thus using) the submodules, if
> any, of the repositories, as a working copy is required to use
> submodules (becaue we need to know the list of submodules, where to find
> them, where to clone them, what cset to checkout, and all those is
> dependent upon the checked out cset of the father repository).
> Switch to using /plain/ clones with a working copy.
> This means that the extra refs used by some forges (like pull-requests
> for Github, or changes for gerrit...) are no longer fetched as part of
> the clone, because git does not offer to do a mirror clone when there is
> a working copy.
> Instead, we have to fetch those special refs by hand. Since there is no
> easy solution to know whether the cset the user asked for is such a
> special ref or not, we just try to always fetch the cset requested by
> the user; if this fails, we assume that this is not a special ref (most
> probably, it is a sha1) and we defer the check to the archive creation,
> which would fail if the requested cset is missing anyway.
FYI, I did a try with:
git clone -c remote.origin.fetch='+refs/*:refs/*' <url> to be able to do
this in one go, but it doesn't work. git clone still only fetches
refs/heads and you need to run a git pull afterwards, so it doesn't
really buy us much.
We could in theory do git init + git fetch instead of git clone, but
that doesn't look any simpler than what you propose here.
As sub modules are quite rare and we know when they are requested (using
foo_GIT_SUBMODULES), we COULD keep the existing code path around for
"normal" repos, but that would mean we would need separate code paths
for the clone/archive steps for the two variants, so that is probably
not worth it.
Committed, thanks.
--
Bye, Peter Korsgaard
next prev parent reply other threads:[~2016-07-02 16:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-01 9:01 [Buildroot] [PATCH 0/4 v3] core/download: add support for git sub-modules (branch yem/git) Yann E. MORIN
2016-07-01 9:01 ` [Buildroot] [PATCH 1/4 v3] support/download/git: do not use bare clones Yann E. MORIN
2016-07-02 16:42 ` Peter Korsgaard [this message]
2016-07-01 9:01 ` [Buildroot] [PATCH 2/4 v3] support/download/git: do not use git archive, handle it manually Yann E. MORIN
2016-07-02 17:08 ` Peter Korsgaard
2016-07-06 1:04 ` Ben Boeckel
2016-07-01 9:01 ` [Buildroot] [PATCH 3/4 v3] support/download/git: add support for submodules Yann E. MORIN
2016-07-02 17:09 ` Peter Korsgaard
2016-07-01 9:01 ` [Buildroot] [PATCH 4/4 v3] core/pkg-infra: download git submodules if the package wants them Yann E. MORIN
2016-07-02 17:11 ` Peter Korsgaard
2016-07-02 23:40 ` Yann E. MORIN
2016-07-02 23:55 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d1mw56vo.fsf@dell.be.48ers.dk \
--to=peter@korsgaard.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox