You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A lightweight, fast CLI tool for managing git submodules with advanced sparse checkout support. Built on top of `gitoxide` and `git2` libraries for maximum performance and reliability.
16
+
Git submodules solve a real problem. **Managing submodules is a pain.** You use them infrequently enough that you always forget which command does what — and when something breaks, the recovery steps are a small nightmare. New contributors hit this especially hard: onboarding onto a project that uses submodules is its own obstacle course.
17
17
18
-
## 🚀 Features
18
+
`submod` wraps the whole lifecycle in one consistent CLI. Sixteen commands, including nuke-it-from-orbit for when you're done being reasonable. Built on gitoxide and git2, with automatic fallback so operations don't fail silently.[^1] It's actively used across @knitli and @plainlicense, where submodules handle shared functionality between repos.
19
19
20
-
-**TOML-based configuration** - Define submodules, sparse-checkout paths, and settings in a simple config file
21
-
-**Global defaults with overrides** - Set project-wide submodule settings with per-submodule customization
22
-
-**Sparse checkout support** - Efficiently checkout only the parts of submodules you need
23
-
-**Fast operations** - Leverages `gitoxide` for high-performance git operations
24
-
-**Robust fallbacks** - Automatic fallback to `git2` and CLI when needed
25
-
-**Comprehensive commands** - Add, check, init, update, reset, and sync submodules with ease
26
-
-**Developer-friendly** - Clear status reporting and error messages
20
+
## :rocket: Features
21
+
22
+
-**TOML config** — define submodules, sparse-checkout paths, and defaults in one file
23
+
-**Sparse checkout** — clone only the parts of a submodule you actually need
24
+
-**Global defaults with per-submodule overrides** — set it once, customize where it matters
25
+
-**Fallback chain** — tries gitoxide first, falls back to git2, then CLI
26
+
-**Clear status and errors** — you'll know what broke and why
27
+
28
+
[^1]: The fallback architecture is more a reflection of the status of `gitoxide` and `git2` submodule support than a stability concern. Their features do not consistently provide the full lifecycle of submodule operations. Together they cover >90%, but sometimes immaturely. The fallbacks architecture handles that gracefully and lets native operations grow with those libraries.
0 commit comments