{"id":21532909,"url":"https://github.com/githubtoolbox/github-ripper","last_synced_at":"2025-03-17T19:40:34.729Z","repository":{"id":56874345,"uuid":"344565995","full_name":"GitHubToolbox/github-ripper","owner":"GitHubToolbox","description":"Ghrip is a command line tool for ripping (cloning) repositories from GitHub in bulk.","archived":false,"fork":false,"pushed_at":"2022-09-15T12:01:09.000Z","size":41,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-24T06:45:35.904Z","etag":null,"topics":["bulk-clone","github","github-api","wolfsoftware"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/GitHubToolbox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null},"funding":{"ko_fi":"wolfsoftware"}},"created_at":"2021-03-04T18:08:38.000Z","updated_at":"2024-05-14T13:01:31.000Z","dependencies_parsed_at":"2022-08-20T10:11:13.838Z","dependency_job_id":null,"html_url":"https://github.com/GitHubToolbox/github-ripper","commit_stats":null,"previous_names":["githubtoolbox/github-ripper","developerstoolbox/github-ripper"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GitHubToolbox%2Fgithub-ripper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GitHubToolbox%2Fgithub-ripper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GitHubToolbox%2Fgithub-ripper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GitHubToolbox%2Fgithub-ripper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GitHubToolbox","download_url":"https://codeload.github.com/GitHubToolbox/github-ripper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244099515,"owners_count":20397973,"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":["bulk-clone","github","github-api","wolfsoftware"],"created_at":"2024-11-24T02:22:49.737Z","updated_at":"2025-03-17T19:40:34.697Z","avatar_url":"https://github.com/GitHubToolbox.png","language":"Ruby","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/DevelopersToolbox/\"\u003e\n        \u003cimg src=\"https://cdn.wolfsoftware.com/assets/images/github/organisations/developerstoolbox/black-and-white-circle-256.png\" alt=\"DevelopersToolbox logo\" /\u003e\n    \u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/DevelopersToolbox/github-ripper/actions/workflows/pipeline.yml\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/workflow/status/DevelopersToolbox/github-ripper/pipeline/master?style=for-the-badge\" alt=\"Github Build Status\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/DevelopersToolbox/github-ripper/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/release/DevelopersToolbox/github-ripper?color=blue\u0026label=Latest%20Release\u0026style=for-the-badge\" alt=\"Release\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/DevelopersToolbox/github-ripper/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/commits-since/DevelopersToolbox/github-ripper/latest.svg?color=blue\u0026style=for-the-badge\" alt=\"Commits since release\"\u003e\n    \u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\".github/CODE_OF_CONDUCT.md\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Code%20of%20Conduct-blue?style=for-the-badge\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\".github/CONTRIBUTING.md\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Contributing-blue?style=for-the-badge\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\".github/SECURITY.md\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Report%20Security%20Concern-blue?style=for-the-badge\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/DevelopersToolbox/github-ripper/issues\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Get%20Support-blue?style=for-the-badge\" /\u003e\n    \u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://wolfsoftware.com/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Created%20by%20Wolf%20Software-blue?style=for-the-badge\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Overview\n\nGhrip is a command line tool for ripping (cloning) repositories from GitHub in bulk. It allows you to clone all repositories owned by a named user or users, or from an organisation or organisations.\n\nTo make the cloning as fast as possible we make extensive use of the [Parallel](https://rubygems.org/gems/parallel) gem to run as many clones as possible in parallel.\n\n### Tokens\n\nThere is no requirement to supply a token when using ghrip, however there are numerous benefits. including but not limited to:\n\n1. Less impact from connection throttling (Unauthenticated connections are throttled more heavily by GitHub)\n2. Ability to clone private repositories\n3. Simple to clone all of your own repositories (no need to specify a username)\n\nYou could for example clone ALL the repositories that you own with a single command.\n\n```\n# ghrip -t \u003cYour token goes here\u003e -A\n```\n\n\u003e If you just wanted your personal repositories you could use -U instead of -A, or -M if you just wanted the repositories for organisations that you are a member of.\n\nIf you do not supply token you will be limited to just cloning public repositories.\n\n### No Passwords?\n\nWe intentionally do **NOT** handle username + password combinations when talking to GitHub, this removes some security risks and also removes the issue of having to handle MFA logins. It allows you to create a `read-only` token for cloning only to further improve your security position.\n\n### Example\n\nThe following is an example of how to rip all of the **public** repositories owned by Wolf Software.\n\n```shell\n# ghrip -o WolfSoftware\n```\n\n## Usage\n\n```shell\nUsage: ghrip\n    -h, --help                       Display this screen\n\nParameters:\n    -t, --token \u003ctoken\u003e              GitHub personal access token (PAT)\n    -b, --base-dir \u003cpath\u003e            The base directory to download to\n    -g, --use-git                    Use git instead of https to clone the repositories\n\nCloning Parameters:\n    -u, --user \u003cnames\u003e               Github username(s) to rip\n    -o, --org \u003cnames\u003e                Github organisation(s) to rip\n    -U, --user-repos                 Rip all of the repositories for the named user(s)\n    -M, --org-member-repos           Rip all of the repositories for all organisation the user(s) is a member of\n    -A, --all-repos                  Same as running -U -M\n    -O, --org-repos                  Rip all of the repositories for the named organisation(s)\n\nFlags:\n    -d, --dry-run                    Show a list of repositories that WOULD be ripped\n    -f, --full                       Show status of all repositories in post run report\n    -q, --quiet                      Suppress the showing of the post run report\n    -s, --silent                     Suppress all output\n```\n\n\u003e If you just supply a username and nothing else it will default to just the users own repositories (same as -U)\n\n### Default Values\n\n| Option Name      | Default Value  | Purpose |\n| ---------------- | -------------- | ------- |\n| -t, --token            | No default     | The token used to authenticate yourself (not required but helps remove/mitigate throttling issues) | \n| -b, --base-dir         | ~/Downloads/repos   | The directory to place the cloned repos in |\n| -g, --use-git          | False          | Use git instead of https to clone the repos, this requires your public key to be configured on GitHub |\n| -u, --user             | No default     | The user(s) you wish to rip the repo of (if not supplied defaults to yourself **IF** a token is used) |\n| -o, --org              | No default     | The organisation(s) you want to rip the repos of |\n| -U, --user-repos       | False          | Download all repositories belonging to the named user(s) |\n| -M, --org-member-repos | False          | Download all repositories belonging to any organisation the named user(s) is a member of |\n| -A, --all-repos        | False          | Works the same as --user-repo and --org-member-repos combined |\n| -O, --org-repos        | False          | Download all repositories belonging to the named organisation(s) |\n| -d, --dry-run          | False          | Display the list of repositories that **would** be downloaded |\n| -f, --full             | False          | Show all repositories in the post run report instead of just errors |\n| -q, --quiet            | False          | Suppress the showing of the post run report |\n| -s, --silent           | False          | Suppress all output |\n\n\u003e users and orgs can be either a single entry or comma-separated list of entries.\n\n### Error Handling\n\nAll errors raised from github-core-lister are caught and re-thrown as StandardErrors in order to simplify the catching.\n","funding_links":["https://ko-fi.com/wolfsoftware"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithubtoolbox%2Fgithub-ripper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgithubtoolbox%2Fgithub-ripper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithubtoolbox%2Fgithub-ripper/lists"}