Skip to content

Commit fdd606d

Browse files
pi-anldpgeorge
authored andcommitted
py/mkrules.mk: Use partial clone for submodules if available.
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]>
1 parent e8c3f31 commit fdd606d

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

py/mkrules.mk

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,11 @@ submodules:
252252
$(ECHO) "Updating submodules: $(GIT_SUBMODULES)"
253253
ifneq ($(GIT_SUBMODULES),)
254254
$(Q)cd $(TOP) && git submodule sync $(GIT_SUBMODULES)
255-
$(Q)cd $(TOP) && git submodule update --init $(GIT_SUBMODULES)
255+
# If available, do blobless partial clones of submodules to save time and space.
256+
# A blobless partial clone lazily fetches data as needed, but has all the metadata available (tags, etc.).
257+
# Fallback to standard submodule update if blobless isn't available (earlier than 2.36.0)
258+
$(Q)cd $(TOP) && git submodule update --init --filter=blob:none $(GIT_SUBMODULES) || \
259+
git submodule update --init $(GIT_SUBMODULES)
256260
endif
257261
.PHONY: submodules
258262

0 commit comments

Comments
 (0)