Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.
/ gitfetch Public archive
forked from rewindio/gitfetch

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

License

Notifications You must be signed in to change notification settings

cschlack/gitfetch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 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

Requirements

This gem requires libgit2 >= v1.4

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+
# 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.clone_bare(remote_url, path, access_token)
# Set up a (bare) mirror of the remote repository.
# example:
Git.clone_bare('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/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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 93.2%
  • Ruby 6.8%