https://github.com/chsxf/git-repo-backup
A command-line tool to manage git repository backups - Works with GitHub or BitBucket
https://github.com/chsxf/git-repo-backup
backup backup-utility bitbucket git github php
Last synced: 3 months ago
JSON representation
A command-line tool to manage git repository backups - Works with GitHub or BitBucket
- Host: GitHub
- URL: https://github.com/chsxf/git-repo-backup
- Owner: chsxf
- License: mit
- Created: 2022-05-22T16:18:51.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-01T20:58:52.000Z (about 4 years ago)
- Last Synced: 2025-01-19T21:47:32.559Z (over 1 year ago)
- Topics: backup, backup-utility, bitbucket, git, github, php
- Language: PHP
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# About This Project
`git-repo-backup` is a command-line tool to manage git repository backups.
At the moment, it works only with GitHub or BitBucket Cloud.
## Conventions
This project uses [gitmoji](https://gitmoji.dev) for its commit messages.
# Installation
## Requirements
- [PHP](https://www.php.net/) 8.1+ with cURL extension enabled
- [Composer](https://getcomposer.org)
## Installing with Composer
### Installing Globally
We recommend installing this package globally.
```
composer global require chsxf/git-repo-backup
```
If not already, you need to add the global composer `bin` directory to your `PATH` environment variable.
### Installing Locally
But you can also install it locally if it better fits your setup.
```
composer require chsxf/git-repo-backup
```
The tool will be installed in the local `vendor` folder and the executable script can be called with the `vendor/bin/git-repo-backup` command.
## Updating with Composer
If installed globally, you can run `composer global update chsxf/git-repo-backup`.
If installed locally, simply run `composer update chsxf/git-repo-backup` in the folder where the tool was previously installed.
# Usage
```
git-repo-backup
--username
--password
--platform (github|bitbucket)
--clone-protocol (https|ssh)
[--no-git-lfs]
[--dest-dir ]
[--ssh-key ]
[--exclude ]
[--dry-run]
[--sort-by (size|name) (asc|desc)]
```
## Required Parameters
| Parameter | Description |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `username` | **GitHub**: User name used to authenticate with the platform's API
**BitBucket Cloud**: Workspace (user or organization) for which to get repositories |
| `password` | See [Passwords](#passwords) section below |
| `platform` | Platform on which the repositories are hosted
Accepted values:
- `github`
- `bitbucket` (BitBucket Cloud)
| `clone-protocol` | Protocol to use when cloning/fetching the repositories
Accepted values:
- `ssh` (recommended)
- `https`
## Optional Parameters
| Parameter | Description |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `no-git-lfs` | Skip availability test for Git LFS. Use this setting if you don't use Git LFS with any of your repositories. |
| `dest-dir` | Destination path to store the repository backups. If not set, the script stores backups in current working directory. |
| `ssh-key` | **Not supported on Windows**
Specific SSH key to use with repositories, useful if you have several SSH keys for the same domain.
The specific path will be passed to git commands thanks to the `core.sshCommand` config.
Ignored if `--clone-protocol` is set to `https` |
| `exclude` | Comma-separated list of excluded repositories
Each entry can be either an exact match if containing only alphanumerical characters, hyphens and underscores, or a case-insensitive Perl-Compatible Regular Expression otherwise |
| `dry-run` | If present, no clone or fetch/pull operation is done, and only repositories information are reported |
| `sort-by` | Specify how repositories are sorted before being processed.
Repositories can be sorted by `name` (default) or by `size`.
Order can ascending (`asc` - default) or descending (`desc`).
Accepted values:
- `name asc`
- `name desc`
- `size asc`
- `size desc`
## Passwords
The `password` value differs from one platform to another.
On GitHub, the password must be a [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).
On BitBucket Cloud, the password must be an [app password](https://bitbucket.org/account/settings/app-passwords/).
# Planned Improvements
- [ ] Support GitHub organizations
- [ ] Allow the use of a configuration file
# License
This repository is distributed under the [MIT License](LICENSE).