← Back to issue list

Add source option for git submodules

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1640675
Type
issue
State
closed
Author
~guruofquality
Labels
—
Created
Updated
Closed

Current evaluation

Feature request implemented: source-submodules added to git sources, merged as snapcraft PR #3629 (383c1f1ce) and craft-parts PR #169 (3891f255); shipped in Snapcraft 7 and 8. Maintainer closed the2016 Launchpad bug as done.

Resolution: closed resolved

Reason: A ~mr-cal closing comment (2026-09-16) states the work was completed in canonical/snapcraft#3629 and canonical/craft-parts#169 and is in Snapcraft 7 and 8. Both PRs are merged, and craft-parts now documents source-submodules in craft_parts/sources/sources.py and handles it in git_source.py.

Evaluated by: mr-cal-bot

No scores available.

Issue body

Currently the git support recursively clones all submodules in a git repository regardless. However, in many cases either none or only some of the submodules are required. Submodules can contain extra repositories not needed for building like precompiled binaries or alternative copies of a dependency already packaged along with the OS. This can add unwanted time, network traffic, and even gigabytes of disk-space -- which could be easily avoided. This bug requests adding a source-submodules option which specifies a list of explicit submodules to clone. An unspecified source-submodules option will continue to clone all submodules recursively, and an empty list for source-submodules can be used to specify that no submodules should be cloned. Since the git submodule command can be passed a list of paths, a new source-submodules option should map fairly well to the git command line arguments. And the current recursive arguments could be added conditionally based on the presence of source-submodules: https://github.com/snapcore/snapcraft/blob/master/snapcraft/internal/sources.py#L215

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Feature request implemented: source-submodules added to git sources, merged as snapcraft PR #3629 (383c1f1ce) and craft-parts PR #169 (3891f255); shipped in Snapcraft 7 and 8. Maintainer closed the2016 Launchpad bug as done.
stealth/space-bunny-alpha — closed resolved Git submodule fetching is now configurable via source-submodules: choose modules, use [] to skip all, or omit it for recursive fetching. Implemented in #3629, backported in #3635, and shipped in Snapcraft 7/8.
stealth/space-bunny-alpha — closed resolved Implemented source-submodules in Snapcraft PR #3629 and Craft Parts PR #169 (commit 3891f255); shipped in Snapcraft 7 and 8.
qwen/qwen3.6-35b-a3b — — Implemented the source-submodules option to selectively clone git submodules. The feature was completed via related issues and pull requests, and released in Snapcraft 7 and 8.
qwen/qwen3.8-27b
Impact: 20
Quick Win: 12
Staleness: 95
Complexity: 40
Confidence: 85
Support Request: 10
close stale Feature request to add a source-submodules option to the git source so only listed submodules are cloned instead of all recursively. The requested option was implemented in merged PR canonical/snapcraft#3629, so the issue is outdated and ready to close.
qwen/qwen3.6-35b-a3b
Staleness: 98
Complexity: 25
Confidence: 80
Support Request: 10
close stale Request to add a source-submodules option to control git submodule cloning in snapcraft. Unlabelled, zero comments, and inactive for over nine years.
qwen/qwen3.6-35b-a3b
Staleness: 98
Complexity: 30
Confidence: 85
Support Request: 10
close stale Feature request to add a configurable option for cloning specific git submodules instead of all recursively. Unlabeled, no maintainer interaction, and inactive for over 9 years.
qwen3.6-35b-a3b-mtp-q6
Staleness: 98
Complexity: 40
Confidence: 90
Support Request: 10
close stale Feature request to add a source-submodules option for controlling git submodule cloning in snapcraft. Open for ~9.5 years with no comments, labels, or maintainer interaction.

Update history

Date Change
created

Related work

  • Likely Fixed By: canonical/craft-parts#169 (confidence 98%)

    Merged commit 3891f255 'sources: make submodule fetching configurable'; source-submodules documented in craft_parts/sources/sources.py and implemented in git_source.py.

  • Likely Fixed By: canonical/snapcraft#3629 (confidence 97%)

    Backport of the same change into snapcraft's bundled sources; merged as 383c1f1ce (related commits ac02c36ec, 195d509bd).

  • Related To: craft-parts#3891f255 (confidence 60%)

    Referenced as the short SHA of the implementing commit in craft-parts, not a separate tracked item.

Related issues

Issue Project State Summary Similarity
#1536698 Git source doesn't support submodules snapcraft (launchpad) closed Git source submodule support was implemented and merged in ubuntu-core/snapcraft PR #249 (merge commit 1984cb339), using recursive cloning and submodule updates on pull.
78%
#249 Git source: Support submodules. snapcraft merged Merged canonical/snapcraft#249 via 1984cb339, adding recursive Git cloning and submodule updates on pull to resolve LP #1536698.
78%
#3635 sources: make submodule fetching configurable snapcraft merged Merged into snapcraft/7.0 as 4fabb9a1d, backporting #3629 to add configurable Git submodule fetching through source-submodules.
76%
#94 Support the source-subdir keyword for parts snapcraft merged Merged snapcraft#94 via 9fe120945 (implementation 8741af4a3), adding source-subdir support while preserving source trees and delegating build-subdirectory selection to plugins.
74%
#217 added test for git sources in the get() method in snapcraft/sources.py snapcraft closed Closed unmerged; its Git-source tests were reworked and merged through successor PR #233 in commit f909dc292.
72%
#1694765 source-type: git uses --remote for submodules snapcraft (launchpad) closed Fixed by merged PR snapcore/snapcraft#1344 (commit a8500f718), removing --remote from Git submodule updates so superproject-recorded revisions are honored.
72%
#567 Add Subversion support snapcraft merged Merged Subversion source support, tests, and packaging updates in canonical/snapcraft#567 (commit 0e1ec16e6), fixing Launchpad bug 1543243 and shipping in Snapcraft 2.12.
71%
#1549676 source-subdir says its "a source dir within a repo to build from" but misses that snapcraft will only copy that subdir snapcraft (launchpad) closed Fixed by merged ubuntu-core/snapcraft#344 (commit 6beb6fec6): Snapcraft now copies the full repository while building from the selected source-subdir.
71%
#1957767 no way to use non-recursive git source snapcraft (launchpad) closed Merged in snapcore/snapcraft#3629, adding configurable Git submodule fetching so non-recursive clones can be requested.
70%
#1999219 snapcraft checks only default branch for submodules snapcraft (launchpad) closed Bug was upstream in craft-parts: git source cloned --recursive then checked out source-commit, so submodules were only fetched from the default branch. Fixed by craft-parts PR #1600 (commit d2845976); snapcraft issue closed once that landed.
70%