Skip to main content

Managing the Memfault SDK as a Git Submodule

Installing the SDK as a Git Submodule​

Using a Git Submodule to manage the Memfault SDK can be useful, especially if your build system doesn't natively support using Git Repositories as sources.

To add the Memfault SDK as a Git Submodule:

# the last argument sets the path to the submodule, here "third_party/memfault-firmware-sdk"
git submodule add https://github.com/memfault/memfault-firmware-sdk.git third_party/memfault-firmware-sdk

The submodule add is now staged in the Git index, and can be committed as usual.

Specifying the version of the Memfault SDK​

By default, the submodule add command will checkout the latest commit on the default branch.

See the Memfault SDK releases page for the latest release version:

https://github.com/memfault/memfault-firmware-sdk/releases

To select a specific tag for the submodule, follow these commands:

# change directory to the submodule
cd path/to/memfault/submodule

# checkout a particular tag
git checkout <tag>

# cd back to the parent repo root
cd -

# stage the updated submodule to the index (and commit if appropriate)
git add path/to/memfault/submodule

Considerations when cloning the parent repo​

To initialize the repo after adding a submodule, the following commands should be used:

# Option 1: clone and update in one command by using the '--recursive' flag
git clone --recursive <repo remote URL>

# Option 2: clone, then update after
git clone <repo remote URL>
cd path-to-newly-cloned-repo
git submodule update --init --recursive

To learn more about working with submodules, check out GitHub's blog post about them.