Per-repo documentation — each repo's docs/ and README, ingested and associated with the repo. Rendered through the <<<RepoDocs>>> tag.
← modular_template docs · README.md
This project demonstrates how to automate the setup of a Git repository with submodules using a configuration file. This is useful when you want to initialize a repository and manage its dependencies through submodules programmatically.
- Python 3.x - git command-line tool installed on your system - GitPython library. You can install it via pip:
pip install gitpython
The repository configuration is specified in a JSON file named repos_config.json. Here is an example configuration:
{
"parent_dir": "uses_db",
"submodules": [
{
"url": "[email protected]:dudezilla/make_db.git",
"path": "make_db"
}
]
}
- parent_dir: Specifies the name of the directory to be created and initialized as a Git repository. - submodules: List of submodules to be added to the repository. Each submodule requires: - url: Repository URL of the submodule. - path: File path relative to the parent_dir where the submodule will be located.
Use this snippet to create an initial repository setup:
... git clone [email protected]:dudezilla/modular_git_template.git
python -m venv venv
(activate venv) venv/scripts/activate on Windows or source ./venv/bin/activate
cd ./modular_git_template
pip install -r requirements.txt
python template.py
-**on Debian based systems python3 is used to start Python rather than python.
- load_config(file_path): Loads the configuration from a JSON file. - initialize_repo(parent_dir): Creates a directory if it doesn't exist, initializes it as a Git repository. - add_submodule(repo, submodule_url, submodule_path): Adds a submodule to the repository. - setup_git_repo_with_dependencies(config_file): Loads the configuration, initializes the main repo, adds submodules, creates a README, stages changes, and commits to the repository.
Once completed, the script will: - Create a main repository directory. - Add defined submodules. - Generate a README.md file listing all the submodules. - Commit all changes with an initial commit message.
You'll see the following message upon successful completion:
Repository setup complete. You can clone it using:
git clone --recurse-submodules [email protected]:dudezilla/<>
Feel free to use and modify this script as needed. Contributions are welcome!