Nanometers Per Millisecond

    gh-repo-clone-all

    2.0.9 • Public • Published

    gh-repo-clone-all

    npm version Linux macOS Windows compatible Build status Coverage status Dependency status Renovate enabled
    Open in Gitpod Buy Me a Coffee PayPal Patreon

    Addition to GitHub CLI that clones all public and private repositories. It uses GitHub CLI and its authentication system and passes the filter options through to gh repo list.

    Install

    # npm
    $ npm install -g gh-repo-clone-all
    
    # Yarn
    $ yarn global add gh-repo-clone-all

    Usage

    First of all, you need to have GitHub CLI installed. You can find out by running gh version. Also make sure that you are logged in so that gh-repo-clone-all can fetch the repository list. You can find out by running gh auth status.

    Now we can run the command like this:

    Usage: gh-repo-clone-all [directory] [options] [gh repo list options] 
    
    You can pass the supported options through from gh repo list. The options below are additional.
    
    Options:
      -b, --branch <branch>  The branch to checkout
      -h, --help               display help for command

    See the gh repo list docs for details about the filtering options.

    Cloning

    The simplest case is to just clone into the current directory (which has to be empty):

    $ gh-repo-clone-all
    
    Cloning into /Users/foobar/repos …
    
    Successfully cloned john-doe/repo1.
    Successfully cloned john-doe/repo2.
    Successfully cloned john-doe/repo3.
    Successfully cloned john-doe/repo4.
    
    Done!

    Usually you will want to provide a directory name, which is then created:

    $ gh-repo-clone-all my-repos

    gh repo list has a default limit of 30, which is rather low. So let's put it up to clone more repositories:

    $ gh-repo-clone-all my-repos --limit 100

    You can actually just put a very high limit to clone everything:

    $ gh-repo-clone-all my-repos --limit 9999
    

    Checking Out a Branch

    Instead of the default branch, you can checkout a specific branch like this:

    $ gh-repo-clone-all my-repos --branch renovate/lock-file-maintenance

    Note that if a branch cannot be checked out by a repository, the repository will not be cloned.

    Filtering

    You can use the filtering options from gh repo list to filter the repositories you would like to clone:

    # Clone only archived repositories
    $ gh-repo-clone-all --archived
    
    # Clone only forks
    $ gh-repo-clone-all --fork
    
    # Clone only repositories of a language
    $ gh-repo-clone-all --language lang
    
    # Clone up to a limit
    $ gh-repo-clone-all --limit x
    
    # Do not clone archived repositories
    $ gh-repo-clone-all --no-archived
    
    # Clone only private repositories
    $ gh-repo-clone-all --source
    
    # Clone only public repositories
    $ gh-repo-clone-all --public
    
    # Clone only non-forks
    $ gh-repo-clone-all --source

    The Git Protocol

    gh-repo-clone-all uses the protocol defined in GitHub CLI to clone repositories. You can find out which via gh config get git_protocol, and you can set it via gh config set git_protocol [ssh,https].

    Contribute

    Are you missing something or want to contribute? Feel free to file an issue or a pull request! ⚙️

    Support

    Hey, I am Sebastian Landwehr, a freelance web developer, and I love developing web apps and open source packages. If you want to support me so that I can keep packages up to date and build more helpful tools, you can donate here:

    Buy Me a Coffee  If you want to send me a one time donation. The coffee is pretty good 😊.
    PayPal  Also for one time donations if you like PayPal.
    Patreon  Here you can support me regularly, which is great so I can steadily work on projects.

    Thanks a lot for your support! ❤️

    License

    MIT License © Sebastian Landwehr

    Install

    npm i gh-repo-clone-all

    DownloadsWeekly Downloads

    33

    Version

    2.0.9

    License

    MIT

    Unpacked Size

    14.5 kB

    Total Files

    7

    Last publish

    Collaborators

    • dword-design