Clone/fetch (or push to) git repositories. All method calls are non-blocking, so cloning/fetching/pushing multiple repositories concurrently is possible using Threads.
Supports GitHub authentication tokens for remote repositories using HTTP basic auth.
API docs, see here: https://rubydoc.info/gems/gitfetch
place
gem 'gitfetch'
in your Gemfile
and execute
bundle install
require 'gitfetch'
# Git.fetch(repository, access_token=nil, update_head=false)
# connects to remote "origin" of +repository_path+ using +access_token+ as
# username for authentication:
#
# - prunes tracking refs that are no longer present on remote
# - downloads new data and update tips
#
# example:
Git.fetch('repository.git', '6a61e7dddd28c...')
# Git.mirror(remote_url, path, access_token)
# Set up a (bare) mirror of the remote repository.
# example:
Git.mirror('https://github.com/octokit/Spoon-Knife.git', '/data/git/Spoon-Knife.git', '6a61e7dddd28c...')
# Git.push(repository_path, push_url, access_token)
# Pushes local repository to remote push_url
# example:
Git.push('/data/git/repository.git', 'https://github.com/backhub/new_repository.git', '6a61e7dddd28c...')
# Git.libgit2_version
# Returns the version String of libgit2
# example:
Git.libgit2_version
gitfetch was built @BackHub because we needed a tool to backup GitHub repositories. We use Sidekiq for running jobs in multiple threads. rugged is not thread-safe/blocking background threads.
gitfetch features a simple API (clone/fetch/push) and can run in multiple threads concurrently.
made with ❤️ by Christian Schlack@BackHub