Git2S3¶
Backup GitHub projects to AWS S3
Platform Supported
Deployments
Kick off¶
Recommendations
Use a dedicated virtual environment
Install Git2S3
python -m pip install git2s3
Initiate - IDE
import git2s3
if __name__ == '__main__':
git = git2s3.Git2S3()
git.start()
Initiate - CLI
git2s3 start
Use
git2s3 --help
for usage instructions.
Environment Variables¶
Sourcing environment variables from an env file
By default,
Git2S3
will look for a.env
file in the current working directory.
Refer samples directory for examples.
GIT_API_URL - GitHub API endpoint. Defaults to
https://api.github.com/
GIT_OWNER - GitHub profile owner or organization name.
GIT_TOKEN - GitHub token to get ALL repos (including private).
GIT_IGNORE - List of repositories/gists to ignore. Defaults to
[]
SOURCE - Source options
[repo, gist, wiki]
to back up. Defaults to all.LOG - Log options to log to a
file
orstdout
. Does not apply when custom logger is usedDEBUG - Boolean flag to enable debug level logging. Does not apply when custom logger is used
STORE_LOCAL - Boolean flag to store the backup locally. Defaults to
False
INCOMPLETE_UPLOAD - Boolean flag to upload incomplete cloning. Defaults to
False
AWS_PROFILE_NAME - AWS profile name. Uses the CLI config value
AWS_DEFAULT_PROFILE
by default.AWS_ACCESS_KEY_ID - AWS access key ID. Uses the CLI config value
AWS_ACCESS_KEY_ID
by default.AWS_SECRET_ACCESS_KEY - AWS secret key. Uses the CLI config value
AWS_SECRET_ACCESS_KEY
by default.AWS_REGION_NAME - S3 bucket’s region. Uses the CLI config value
AWS_DEFAULT_REGION
by default.AWS_BUCKET_NAME - AWS bucket name to store the backups.
AWS_S3_PREFIX - S3 prefix (folder like) for the backup. Defaults to
github
BOTO3_RETRY_ATTEMPTS - Number of retries for Boto3 client config. Defaults to
10
BOTO3_RETRY_MODE - Boto3 retry configuration for S3 client. Defaults to
standard
Coding Standards¶
Docstring format: Google
Styling conventions: PEP 8
and isort
Release Notes¶
Requirement
python -m pip install gitverse
Usage
gitverse-release reverse -f release_notes.rst -t 'Release Notes'
Linting¶
pre-commit
will ensure linting, run pytest, generate runbook & release notes, and validate hyperlinks in ALL
markdown files (including Wiki pages)
Requirement
python -m pip install sphinx==5.1.1 pre-commit recommonmark
Usage
pre-commit run --all-files
Pypi Package¶
Runbook¶
License & copyright¶
© Vignesh Rao
Licensed under the MIT License