Skip to main content

Fork or sync a repo, or clone a user or org on GitHub to GitHub

Project description

superfork

Release Build status codecov Commit activity License

Fork or sync a repo or user/organization's repos on GitHub to GitHub

Features

  • From the command line, you want to fork a repo to a account you control on GitHub

Let's say your GitHub username is mona and you want to fork the repo willf/superfork to your account

uv run superfork mona willf/superfork
  • From the command line, you want to sync or fork all of the repos of a user or organization to an account you control on GitHub

Let's say your GitHub username is mona and you want to sync all of the repos of the user willf to your account

uv run superfork mona willf

You can specify multiple users or organizations to sync

uv run superfork mona willf willf2 willf/superfork

Note: To avoid overwhelming GitHub (and thus hitting API limits), this program will only attempt to fork a repo every 30 seconds. If you are syncing a large number of repos, it may take a while to complete.

THe command has the following options:

  • --include-issues: Include issues and comments (not working yet)
  • --sync: Sync when repository already exists (default)
  • --no-sync: Don't sync when repository already exists
  • --include-private: Include private repositories (of course, you need to be able to access the private repos)
  • --include-forks: Include repositories which were originally forked (default: don't include)
  • --include-dot-github: Include .github repository if found (default: don't include)
  • --dry-run: Don't actually do anything, but check status of repositories
  • --without-sleeping: Don't sleep between requests (default: sleep 30 seconds between fork requests)

Only use --without-sleeping if you just have a few forks to do, otherwise you may hit GitHub (undocumented) API limits.

Installation

  1. Install uv
  2. Clone this repo
  3. Change to the repo directory

Currently, you need to run the command from the repo directory

$ cd superfork
$ uv run superfork --help
Usage: superfork [OPTIONS] TO [SOURCE]...

  [TO]: destination user or organization

  [SOURCE]: source user or organization, or repository (one or more)

  A valid GITHUB_TOKEN must be set in the environment, or in a .env file in
  the current directory, or in a .env file in the user's home directory.

  To get a GITHUB_TOKEN, see https://docs.github.com/en/authentication

Options:
  --include-issues      Include issues, pull requests, and comments
  --sync / --no-sync    Sync when repository already exists  [default: sync]
  --include-private     Include private repositories
  --include-forks       Include repositories which were originally forked
  --include-dot-github  Include .github repository if found
  --dry-run             Don't actually do anything, but check status of repositories
  --without-sleeping    Don't sleep between requests
  --help                Show this message and exit.

#

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

superfork-0.0.1.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

superfork-0.0.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file superfork-0.0.1.tar.gz.

File metadata

  • Download URL: superfork-0.0.1.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for superfork-0.0.1.tar.gz
Algorithm Hash digest
SHA256 984564e677ecb68aa55ca9a2c7d86c173a23b5bd90d9124d5155c3c0d377cf35
MD5 c83666765362c4eba21fa2b00d4d087c
BLAKE2b-256 d7d20f62270205ce8529948f134386c09d739fd7165ea68281b05ec5ea6ff638

See more details on using hashes here.

File details

Details for the file superfork-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: superfork-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for superfork-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8319a08240b66d113ccfe3367f3ef78e0ee343182958d08846daaf34e13754cd
MD5 b936da0c6f23ee45eae8f1a6129ef97c
BLAKE2b-256 bffad708d9e59fb47416e3e622ef89207d2bd188e9281a9a1d901bfeb07b3475

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page