Tool to mirror repositories of a gitblit server
Project description
Scripts Module to mirror gitblit
This package requires at least python 3.6.
NOTE: This package is created for education only, not intended to be used in productive system!
The class mirror_gitblit.GitblitMirror.Gitblit
provides methods to
talk to a Gitblit-Server via its RPC-API.
To use this class, the command curl
and git
must available in the PATH
-Variable.
One can test if these commands exist by using which
. One possible output:
$ which curl
/usr/bin/curl
$ which git
/usr/bin/git
Example
Running this file (after change some variables) will create at least these files:
${HOME}/mirror-log.txt
,f'{backupdir}/{HOST}-repos.json'
and mirror of repositories in remote gitblit server --if any-- which are less than 1 GB,
in {backupdir}
.
# This script is written by an admin. It uses `mirror-gitblit` to mirror
# repositories of a gitblit-server
from mirror_gitblit.GitblitMirror import Gitblit
from mirror_gitblit import GitblitMirror
import logging
HOME = "/home/backup"
HOST = "gitblit"
DOMAIN = "somedomain.de"
GIT_SSH_PORT=8022
user = "backup"
source_web_url = f"https://{HOST}.{DOMAIN}/gitblit"
curl_credentials_file = f'{HOME}/curl-credential.txt'
source_base_url = f'ssh://{user}@{HOST}.de:{GIT_SSH_PORT}'
backup_dir = "/backup"
repositories_json = f"{backup_dir}/{HOST}-repos.json"
included_repos = [
# name of repositories to be included without leading slash (/)
]
excluded_repos = [
# name of repositories to be excluced without leading slash (/)
]
logging.basicConfig(filename=f"{HOME}/mirror-log.txt",
filemode='w', level=logging.INFO,
format='%(asctime)s - %(levelname)6s - %(message)s',
datefmt="%Y-%m-%dT%H:%M:%S%z")
gitblit = Gitblit(source_web_url, curl_credentials_file, source_base_url, repositories_json, backup_dir)
gitblit.download_repositories_list()
repo_filter = lambda repo : GitblitMirror.inclusive_exclusive_filter(repo, None, excluded_repos)
less_than_1GB = lambda repo: GitblitMirror.repo_size_to_int(repo) < 1000**3
less_than_2MB = lambda repo: GitblitMirror.repo_size_to_int(repo) < 2 * (1000**2)
gitblit.clone_repos(less_than_1GB, False)
gitblit.update_repos(less_than_1GB)
- One must also create a file named
$HOME/curl-credentials.txt
, which contents authentication information against gitblit server in netrc format:
machine {gitblit.domain} login {username} password {user password}
This file is passed to cURL-Option --netrc-file
. To test if your netrc file is
correct run
curl --netrc-file $HOME/curl-credentials.txt https://gitblit.domain.de/gitblit/rpc/?req=LIST_REPOSITORIES
- The SSH-public key of the gitblit user must be imported in Gitblit server.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file mirror-gitblit-0.2.0.tar.gz
.
File metadata
- Download URL: mirror-gitblit-0.2.0.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 199e57de417ae62ddf971e65406bce0edbfe92d2589d993fe2c9021e2ce6be93 |
|
MD5 | 72669b979084274065d4d0946b26d68d |
|
BLAKE2b-256 | 1177287660dbae6bf05c9a534d7f86ddb2d112424a86159e28c5d77d1fce0e60 |
File details
Details for the file mirror_gitblit-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: mirror_gitblit-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef182f056a1aad4e859c64a9e3ee3a2aa24db025a2b5f353f4817cb6ac288d3a |
|
MD5 | 131eb100cd946b2689f233e37292795b |
|
BLAKE2b-256 | 47da3b9250140a6bbaeced47420d388411baabc23c599e82097c37a1cf5756e3 |