{"id":22327489,"url":"https://github.com/rewindio/gitfetch","last_synced_at":"2025-07-29T18:31:09.331Z","repository":{"id":54328298,"uuid":"56864635","full_name":"rewindio/gitfetch","owner":"rewindio","description":"Concurrently clone/fetch/push to (remote) git repositories","archived":false,"fork":false,"pushed_at":"2023-01-12T19:56:38.000Z","size":62,"stargazers_count":1,"open_issues_count":2,"forks_count":2,"subscribers_count":20,"default_branch":"main","last_synced_at":"2023-03-02T22:56:11.902Z","etag":null,"topics":["backup","github"],"latest_commit_sha":null,"homepage":"http://backhub.co","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rewindio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-22T15:14:15.000Z","updated_at":"2023-01-12T19:56:42.000Z","dependencies_parsed_at":"2023-02-09T13:16:00.624Z","dependency_job_id":null,"html_url":"https://github.com/rewindio/gitfetch","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rewindio%2Fgitfetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rewindio%2Fgitfetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rewindio%2Fgitfetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rewindio%2Fgitfetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rewindio","download_url":"https://codeload.github.com/rewindio/gitfetch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228034989,"owners_count":17859245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","github"],"created_at":"2024-12-04T03:09:35.616Z","updated_at":"2024-12-04T03:09:36.138Z","avatar_url":"https://github.com/rewindio.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gitfetch\n\nClone/fetch (or push to) git repositories.\nAll method calls are non-blocking, so cloning/fetching/pushing multiple\nrepositories concurrently is possible using Threads.\n\nSupports GitHub authentication tokens for remote repositories using HTTP basic auth.\n\n## Documentation\n\nAPI docs, see here: https://rubydoc.info/gems/gitfetch\n\n## Installation\n\nplace\n\n```ruby\ngem 'gitfetch'\n```\n\nin your `Gemfile` and execute\n\n```\nbundle install\n```\n\n## Usage\n\n```ruby\nrequire 'gitfetch'\n\n# Git.fetch(repository, access_token=nil, update_head=false)\n# connects to remote \"origin\" of +repository_path+ using +access_token+ as\n# username for authentication:\n#\n# - prunes tracking refs that are no longer present on remote\n# - downloads new data and update tips\n#\n# example:\nGit.fetch('repository.git', '6a61e7dddd28c...')\n\n# Git.mirror(remote_url, path, access_token)\n# Set up a (bare) mirror of the remote repository.\n# example:\nGit.mirror('https://github.com/octokit/Spoon-Knife.git', '/data/git/Spoon-Knife.git', '6a61e7dddd28c...')\n\n# Git.push(repository_path, push_url, access_token)\n# Pushes local repository to remote push_url\n# example:\nGit.push('/data/git/repository.git', 'https://github.com/backhub/new_repository.git', '6a61e7dddd28c...')\n\n# Git.libgit2_version\n# Returns the version String of libgit2\n# example:\nGit.libgit2_version\n```\n\n## Why\n\n*gitfetch* was built @[BackHub](https://backhub.co) because we needed a tool to backup GitHub\nrepositories. We use [Sidekiq](https://sidekiq.org) for running jobs in multiple threads.\n[rugged](https://github.com/libgit2/rugged) is not thread-safe/blocking background threads.\n\n*gitfetch* features a simple API (clone/fetch/push) and can run in multiple threads concurrently.\n\n---\nmade with :heart: by Christian Schlack@[BackHub](https://backhub.co)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frewindio%2Fgitfetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frewindio%2Fgitfetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frewindio%2Fgitfetch/lists"}