Skip to content

Commit

Permalink
py/mkrules.mk: Use partial clone for submodules if available.
Browse files Browse the repository at this point in the history
MicroPython relies on a number of submodules for third party and chip
vendor libraries.  Users need to check these out before building their
desired ports and Github Actions CI here needs to clone them all multiple
times for every build.  Many of these are getting significantly larger over
time, slowing down usage and consuming more disk space.

Newer versions of git have features to avoid pulling all historic / blob
data which can have a significant impact of total data use.  This commit
uses a standard feature of git to do a partial clone, with automatic
fallback to previous behavior on error.

Signed-off-by: Andrew Leech <[email protected]>
  • Loading branch information
pi-anl authored and dpgeorge committed Dec 10, 2024
1 parent e8c3f31 commit fdd606d
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion py/mkrules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,11 @@ submodules:
$(ECHO) "Updating submodules: $(GIT_SUBMODULES)"
ifneq ($(GIT_SUBMODULES),)
$(Q)cd $(TOP) && git submodule sync $(GIT_SUBMODULES)
$(Q)cd $(TOP) && git submodule update --init $(GIT_SUBMODULES)
# If available, do blobless partial clones of submodules to save time and space.
# A blobless partial clone lazily fetches data as needed, but has all the metadata available (tags, etc.).
# Fallback to standard submodule update if blobless isn't available (earlier than 2.36.0)
$(Q)cd $(TOP) && git submodule update --init --filter=blob:none $(GIT_SUBMODULES) || \
git submodule update --init $(GIT_SUBMODULES)
endif
.PHONY: submodules

Expand Down

0 comments on commit fdd606d

Please sign in to comment.