]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
scripts/feeds: shallow clone for specific commit update
authorCedric CHEDALEUX <cedric.chedaleux@orange.com>
Mon, 17 Feb 2025 09:41:32 +0000 (10:41 +0100)
committerChristian Marangi <ansuelsmth@gmail.com>
Wed, 5 Mar 2025 13:18:58 +0000 (14:18 +0100)
When a feed is referenced with a specific commit (i.e. <git_url>^<sha1>),
a full clone was performed and a branch was created from the sha1
and named with the sha1. Other git clones operations are shallowed.

As Git does not support clone at a specific commit, let's first perform
a shallow clone to latest commit, then fetch the relevant commit and
finally checkout it (no more 'pseudo' branch).

It saves bandwith and significantly speeds up the feed update process.

Signed-off-by: Cedric CHEDALEUX <cedric.chedaleux@orange.com>
Link: https://github.com/openwrt/openwrt/pull/18003
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 32d0a57dc10811a24816e51f10e55963f40fe462)
Link: https://github.com/openwrt/openwrt/pull/18168
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
scripts/feeds

index aee73e793f54ecbea6da8fab98e936a91a9ceb8a..3df947c9c706eb7609877b4bdf0c894e12a90f7c 100755 (executable)
@@ -157,7 +157,7 @@ my %update_method = (
        'src-git' => {
                'init'          => "git clone --depth 1 '%s' '%s'",
                'init_branch'   => "git clone --depth 1 --branch '%s' '%s' '%s'",
-               'init_commit'   => "git clone '%s' '%s' && cd '%s' && git checkout -b '%s' '%s' && cd -",
+               'init_commit'   => "git clone --depth 1 '%s' '%s' && cd '%s' && git fetch --depth=1 origin '%s' && git -c advice.detachedHead=false checkout '%s' && cd -",
                'update'        => "git pull --ff-only",
                'update_force'  => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)",
                'post_update'   => "git submodule update --init --recursive",