git-multi-repo-updater is a command line tool for updating multiple GitLab or GitHub repositories with a single command.
Project description
git-multi-repo-updater
is a command line tool for updating multiple GitLab or GitHub repositories with a single command.
Usage
Generate an access token at GitLab or GitHub and set it as environment variable:
export GITLAB_ACCESS_TOKEN=<token>
export GITHUB_OAUTH_TOKEN=<token>
export GIT_TOKEN=<token> # This one is used if previous ones are not found
Provide a list of repositories and a script or a command to run inside each of them:
git-multi-repo-updater --repos repos.txt update_repo.py
Where repos.txt
could be:
https://gitlab.com/<handle>/<repo-title>
https://gitlab.com/<handle>/<repo-title2>
https://github.com/<handle>/<repo-title>
Try it yourself:
git-multi-repo-updater \
--repo https://github.com/<handle>/<repo-title> \
--branch-name add-hello-world-file \
--commit-message "Add hello-world.txt file" \
touch hello-world.txt
These steps will be executed for each specified repository:
- The repository will be cloned into
/tmp/
directory. - A new branch will be created or fetched if it already exists.
- The command or a script will be executed inside the repository.
- A commit containing all the changes will be created.
- Newly created commit will be pushed to remote repository.
- A pull request will be created.
- [optional] A comment will be left next to the PR.
- [optional] The pull request will be merged.
These options could be used to specify more details:
Option | Description | Type | Required |
---|---|---|---|
-r --repo --repos |
Repo URL or a file containing repo URLs | String | Yes |
-m --commit-message |
A commit message which will be used for all of the changes made. | String | No |
-b --branch-name |
A name of a branch which will be created or used to add a commit and to create pull request from. | String | No |
--delay |
Minimum delay in seconds between API calls | Number | No |
Efficiency
git-multi-repo-updater
is implemented in Python and uses coroutines to make multiple parallel API calls. Delays are being made after each API call in order not to get throttled.
Roadmap
- Make API calls to GitHub
- Package and release to PyPi
- Run command as command line tool
- Stand-alone executable file download in Github releases.
- Make API calls to GitLab
- Support different API calls
- Advanced features:
- Merge PRs which have all requirements like approvals met.
Development
make venv
- will create virtual env with dev dependencies.
make check
- will run Flake8, MyPy and PyTest checks.
Related projects
This tool was inspired by:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for git_multi_repo_updater-0.1.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8165339a00a36c3f5337123a42da41a0aab2236e2accb53cc95747de33d3f5a |
|
MD5 | 60f419dc9b5d1eab62d2cd6a5d99a1c7 |
|
BLAKE2b-256 | 2ab48a2926f4d308d3e4142456b0d1a386eedbc558501e377176da6a783f0918 |
Hashes for git_multi_repo_updater-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 938920c526e82e315630180224d294e513a02e6e828f95625a90c683ec43d503 |
|
MD5 | bc8e9f524f1d8a280d425f1de1ce4ee0 |
|
BLAKE2b-256 | 956a24bd9b2ec606693e1e692b167477712771f97183a72d02f8110d9fe8c5fd |