Skip to content
This repository has been archived by the owner on Feb 2, 2024. It is now read-only.
/ gitfetch Public archive

Concurrently clone/fetch/push to (remote) git repositories

License

Notifications You must be signed in to change notification settings

rewindio/gitfetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gitfetch

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.

Documentation

API docs, see here: https://rubydoc.info/gems/gitfetch

Installation

place

gem 'gitfetch'

in your Gemfile and execute

bundle install

Usage

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

Why

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