git-fleximod
Flexible Submodule Management for Git
Overview
Git-fleximod is a Python-based tool that extends Git's submodule capabilities, offering additional features for managing submodules in a more flexible and efficient way.
Installation
#TODO Install using pip:
pip install git-fleximod
If you choose to locate git-fleximod in your path you can access it via command: git fleximod
Usage
Basic Usage:
git fleximod <command> [options]
Available Commands:
checkout: Checkout submodules according to git submodule hash configuration.
status: Display the status of submodules.
update: Update submodules to the tag indicated in .gitmodules variable fxtag.
test: Make sure that fxtags and submodule hashes are consistant,
make sure that official urls (as defined by fxurl) are set
make sure that fxtags are defined for all submodules
Additional Options:
See git fleximod --help for more details.
Supported .gitmodules Variables
fxtag: Specify a specific tag or branch to checkout for a submodule.
fxrequired: Mark a submodule's checkout behavior, with allowed values:
- T:T: Top-level and required (checked out only when this is the Toplevel module).
- T:F: Top-level and optional (checked out with --optional flag if this is the Toplevel module).
- I:T: Internal and required (always checked out).
- I:F: Internal and optional (checked out with --optional flag).
fxsparse: Enable sparse checkout for a submodule, pointing to a file containing sparse checkout paths.
fxurl: This is the url used in the test subcommand to assure that protected branches do not point to forks
Sparse Checkouts
To enable sparse checkout for a submodule, set the fxsparse variable
in the .gitmodules file to the path of a file containing the desired
sparse checkout paths. Git-fleximod will automatically configure
sparse checkout based on this file when applicable commands are run.
See [git-sparse-checkout](https://git-scm.com/docs/git-sparse-checkout#_internalsfull_pattern_set)
for details on the format of this file.
Tests
The git fleximod test action is designed to be used by, for example, github workflows to assure that protected branches are consistant with respect to submodule hashes and fleximod fxtags
Examples
Here are some common usage examples:
Checkout submodules, including optional ones:
git fleximod checkout --optional
Updating a specific submodule to the fxtag indicated in .gitmodules:
git fleximod update submodule-name
Example .gitmodules entry:
[submodule "cosp2"]
path = src/physics/cosp2/src
url = https://github.com/CFMIP/COSPv2.0
fxsparse = ../.cosp_sparse_checkout
fxtag = v2.1.4cesm
Explanation:
This entry indicates that the submodule named cosp2 at tag v2.1.4cesm should be checked out into the directory src/physics/cosp2/src relative to the .gitmodules directory. It should be checked out from the URL https://github.com/CFMIP/COSPv2.0 and use sparse checkout as described in the file ../.cosp_sparse_checkout relative to the path directory.
Additional example:
[submodule "cime"]
path = cime
url = https://github.com/jedwards4b/cime
fxrequired = T:T
fxtag = cime6.0.198_rme01
Explanation:
This entry indicates that the submodule cime should be checked out into a directory named cime at tag cime6.0.198_rme01 from the URL https://github.com/jedwards4b/cime. This should only be done if the .gitmodules file is at the top level of the repository clone.
Contributing
We welcome contributions! Please see the CONTRIBUTING.md file for guidelines.
License
Git-fleximod is released under the MIT License.
Metadata
Release files for git-fleximod 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| git_fleximod-0.5.0.tar.gz | 15.7 kB | Without provenance | Details for git_fleximod-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| git_fleximod-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for git_fleximod-0.5.0-py3-none-any.whl |
Total release size: 33.4 kB
Release files / git_fleximod-0.5.0.tar.gz
| Download URL | git_fleximod-0.5.0.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b52b01cfd6ed589259ae4b1f9b1edf1932113c8b8d21cefd225ef4e2f3ef3549
|
|
BLAKE2b-256 checksum How to use checksums |
ad61b79079d7f42b37446932b30f964f62d720dc95b08571f2e6b6f7381406e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.10.12 Linux/5.14.21-150400.24.18-default
|
Release files / git_fleximod-0.5.0-py3-none-any.whl
| Download URL | git_fleximod-0.5.0-py3-none-any.whl |
|---|---|
| Size | 17.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
230c8c9cc468b510a6f08465ab4b3d4e1170072a85ef5a7563e5eb31f6bbea51
|
|
BLAKE2b-256 checksum How to use checksums |
157689321a0e1e0290fbf3a087f96e5ee2367a736691d7131f6aea0e2c6191fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.10.12 Linux/5.14.21-150400.24.18-default
|
Security for git-fleximod 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.