git-grab 0.1.2

A small tool to clone git repositories to a standard location, organsised by domain name and path
git-grab-0.1.2 is not a library.

Grab clones the repo into $GRAB_HOME/github.com/wezm/git-grab where GRAB_HOME defaults to ~/src if not set or supplied via the --home argument. For example:

$ git grab github.com/wezm/git-grab
Grab https://github.com/wezm/git-grab to /home/wmoore/src/github.com/wezm/git-grab
Cloning into '/home/wmoore/src/github.com/wezm/git-grab'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 30 (delta 9), reused 27 (delta 7), pack-reused 0
Receiving objects: 100% (30/30), 12.50 KiB | 12.50 MiB/s, done.
Resolving deltas: 100% (9/9), done.

$ exa --tree ~/src
/home/wmoore/src
└── github.com
   └── wezm
      └── git-grab
         ├── Cargo.lock
         ├── Cargo.toml
         └── src
            ├── args.rs
            ├── grab.rs
            └── main.rs

Download

Pre-compiled binaries are available for a number of platforms.

Example to download and extract a binary:

curl https://releases.wezm.net/git-grab/0.1.2/git-grab-0.1.2-x86_64-unknown-linux-musl.tar.gz | tar zxf -

Usage

USAGE:
    git grab [OPTIONS] [URL]...

ARGS:
    <URL>...
        One or more git URLs to clone. Any URL accepted by `git` is valid.
        In addition, URLs without a scheme such as
        github.com/wezm/git-grab are also accepted.

OPTIONS:
    -h, --help
            Prints help information

        --home [default: ~/src]
            The directory to use as "grab home", where the URLs will be
            cloned into. Overrides the GRAB_HOME environment variable if
            set.

    -n, --dry-run
            Don't clone the repository but print what would be done.

    -V, --version
            Prints version information

ENVIRONMENT
    GRAB_HOME
        See --home

Build from Source

Minimum Supported Rust Version: 1.51.0

git-grab is implemented in Rust. See the Rust website for instructions on installing the toolchain.

From Git Checkout or Release Tarball

Build the binary with cargo build --release --locked. The binary will be in target/release/git-grab.

From crates.io

cargo install git-grab

Credits

This tool is inspired by grab by @jmhodges. A small comparison:

Feature Original This Version
VCS Supported Git, Mercurial, Subversion, and Bazaar Git
Dependencies None git
Progress Information No Yes, provided by git

Licence

This project is dual licenced under either of:

at your option.