Skip to main content

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:

  1. The repository will be cloned into /tmp/ directory.
  2. A new branch will be created or fetched if it already exists.
  3. The command or a script will be executed inside the repository.
  4. A commit containing all the changes will be created.
  5. Newly created commit will be pushed to remote repository.
  6. A pull request will be created.
  7. [optional] A comment will be left next to the PR.
  8. [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

git_multi_repo_updater-0.1.4.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

git_multi_repo_updater-0.1.4-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file git_multi_repo_updater-0.1.4.tar.gz.

File metadata

File hashes

Hashes for git_multi_repo_updater-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f8165339a00a36c3f5337123a42da41a0aab2236e2accb53cc95747de33d3f5a
MD5 60f419dc9b5d1eab62d2cd6a5d99a1c7
BLAKE2b-256 2ab48a2926f4d308d3e4142456b0d1a386eedbc558501e377176da6a783f0918

See more details on using hashes here.

File details

Details for the file git_multi_repo_updater-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for git_multi_repo_updater-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 938920c526e82e315630180224d294e513a02e6e828f95625a90c683ec43d503
MD5 bc8e9f524f1d8a280d425f1de1ce4ee0
BLAKE2b-256 956a24bd9b2ec606693e1e692b167477712771f97183a72d02f8110d9fe8c5fd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page