diff --git a/Commands.md b/Commands.md index 904b788eb..70f5ce1c3 100644 --- a/Commands.md +++ b/Commands.md @@ -28,6 +28,7 @@ - [`git force-clone`](#git-force-clone) - [`git fork`](#git-fork) - [`git fresh-branch`](#git-fresh-branch) + - [`git get`](#git-get) - [`git gh-pages`](#git-gh-pages) - [`git graft`](#git-graft) - [`git guilt`](#git-guilt) @@ -889,6 +890,15 @@ Create empty local branch `docs`: $ git fresh-branch docs ``` +## git get + +Clone repository into a subdirectory of the configured path, `"$HOME/some-dir"`: + +```bash +$ git config --global --add git-extras.get.clone-path "$HOME/some-dir" +$ git get 'https://github.com/hyperupcall/bake' +``` + ## git guilt Calculate the change in blame between two revisions diff --git a/bin/git-get b/bin/git-get new file mode 100755 index 000000000..978badd9b --- /dev/null +++ b/bin/git-get @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +_usage() { + printf '%s\n' "usage: ${0##*/} +usage: ${0##*/} --help + +Clone a repository in a particular directory." +} + +if (( $# == 0 )); then + _usage + exit 0 +fi + +for arg; do + if [ "$arg" = '-h' ] || [ "$arg" = '--help' ]; then + _usage + exit 0 + fi +done + +url=$1 +if ! shift; then + printf 'ERROR: Failed to shift' >&2 + exit 1 +fi + +clone_path=$(git config --get git-extras.get.clone-path) + +if [ -z "$clone_path" ]; then + printf 'ERROR: %s\n' "Git configuration key 'git-extras.get.clone-path' must be set to a directory to clone under" >&2 + exit 1 +fi + +dirname=${url%/} +dirname=${url%.git} +dirname=${dirname##*/} + +mkdir -p "$clone_path" +git clone "$url" "$clone_path/$dirname" "$@" diff --git a/etc/git-extras-completion.zsh b/etc/git-extras-completion.zsh index 834565dd9..aa0f881b3 100644 --- a/etc/git-extras-completion.zsh +++ b/etc/git-extras-completion.zsh @@ -373,6 +373,7 @@ zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \ force-clone:'overwrite local repositories with clone' \ fork:'fork a repo on GitHub' \ fresh-branch:'create fresh branches' \ + get:'clone a repository in a directory' \ gh-pages:'create the GitHub pages branch' \ graft:'merge and destroy a given branch' \ guilt:'calculate change between two revisions' \ diff --git a/etc/git-extras.fish b/etc/git-extras.fish index 17bcdfa80..ac0c5bde1 100644 --- a/etc/git-extras.fish +++ b/etc/git-extras.fish @@ -27,6 +27,7 @@ set __fish_git_extras_commands \ "force-clone:overwrite local repositories with clone" \ "fork:Fork a repo on github" \ "fresh-branch:Create fresh branches" \ + "get:Clone a repository in a directory" \ "gh-pages:Create the GitHub Pages branch" \ "graft:Merge and destroy a given branch" \ "guilt:calculate change between two revisions" \ diff --git a/man/git-extras.1 b/man/git-extras.1 index 957f18851..c922217bf 100644 --- a/man/git-extras.1 +++ b/man/git-extras.1 @@ -1,6 +1,6 @@ .\" generated with Ronn-NG/v0.9.1 .\" http://github.com/apjanke/ronn-ng/tree/0.9.1 -.TH "GIT\-EXTRAS" "1" "December 2021" "" "Git Extras" +.TH "GIT\-EXTRAS" "1" "May 2023" "" "Git Extras" .SH "NAME" \fBgit\-extras\fR \- Awesome GIT utilities .SH "SYNOPSIS" @@ -20,7 +20,7 @@ Self update\. .SH "ENVIRONMENT AND CONFIGURATION VARIABLES" \fBgit config \-\-add git\-extras\.default\-branch $BRANCH\fR .P -Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\fR isn\'t set, \fBinit\.defaultBranch\fR is used instead\. If none of them are set it defaults to \fBmain\fR\. +Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\fR isn't set, \fBinit\.defaultBranch\fR is used instead\. If none of them are set it defaults to \fBmain\fR\. .SH "COMMANDS" .IP "\[ci]" 4 \fBgit\-abort(1)\fR Abort current git operation @@ -31,6 +31,8 @@ Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\ .IP "\[ci]" 4 \fBgit\-authors(1)\fR Generate authors report .IP "\[ci]" 4 +\fBgit\-browse\-ci(1)\fR \fIView the web page for the current repository\fR +.IP "\[ci]" 4 \fBgit\-browse(1)\fR \fIView the web page for the current repository\fR .IP "\[ci]" 4 \fBgit\-brv(1)\fR List branches sorted by their last commit date @@ -47,7 +49,7 @@ Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\ .IP "\[ci]" 4 \fBgit\-commits\-since(1)\fR Show commit logs since some date .IP "\[ci]" 4 -\fBgit\-contrib(1)\fR Show user\'s contributions +\fBgit\-contrib(1)\fR Show user's contributions .IP "\[ci]" 4 \fBgit\-count(1)\fR Show commit count .IP "\[ci]" 4 @@ -77,6 +79,8 @@ Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\ .IP "\[ci]" 4 \fBgit\-fresh\-branch(1)\fR Create fresh branches .IP "\[ci]" 4 +\fBgit\-get(1)\fR Clone a Git repository under a configured directory +.IP "\[ci]" 4 \fBgit\-gh\-pages(1)\fR Create the GitHub Pages branch .IP "\[ci]" 4 \fBgit\-graft(1)\fR Merge and destroy a given branch @@ -115,7 +119,7 @@ Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\ .IP "\[ci]" 4 \fBgit\-pull\-request(1)\fR Create pull request for GitHub project .IP "\[ci]" 4 -\fBgit\-reauthor(1)\fR Rewrite history to change author\'s identity +\fBgit\-reauthor(1)\fR Rewrite history to change author's identity .IP "\[ci]" 4 \fBgit\-rebase\-patch(1)\fR Rebases a patch .IP "\[ci]" 4 @@ -145,7 +149,7 @@ Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\ .IP "\[ci]" 4 \fBgit\-show\-unmerged\-branches(1)\fR Show unmerged branches .IP "\[ci]" 4 -\fBgit\-squash(1)\fR squash N last changes up to a ref\'ed commit +\fBgit\-squash(1)\fR squash N last changes up to a ref'ed commit .IP "\[ci]" 4 \fBgit\-stamp(1)\fR Stamp the last commit message .IP "\[ci]" 4 diff --git a/man/git-extras.html b/man/git-extras.html index 09da1a48f..d1fb5489b 100644 --- a/man/git-extras.html +++ b/man/git-extras.html @@ -111,6 +111,9 @@

COMMANDS

  • git-authors(1) Generate authors report
  • +git-browse-ci(1) View the web page for the current repository +
  • +
  • git-browse(1) View the web page for the current repository
  • @@ -158,6 +161,8 @@

    COMMANDS

  • git-fresh-branch(1) Create fresh branches
  • +git-get(1) Clone a Git repository under a configured directory
  • +
  • git-gh-pages(1) Create the GitHub Pages branch
  • git-graft(1) Merge and destroy a given branch
  • @@ -260,7 +265,7 @@

    SEE ALSO

    1. -
    2. December 2021
    3. +
    4. May 2023
    5. git-extras(1)
    diff --git a/man/git-extras.md b/man/git-extras.md index aa77cfe27..7ee272249 100644 --- a/man/git-extras.md +++ b/man/git-extras.md @@ -55,6 +55,7 @@ git-extras(1) -- Awesome GIT utilities - **git-force-clone(1)** overwrite local repositories with clone - **git-fork(1)** Fork a repo on github - **git-fresh-branch(1)** Create fresh branches + - **git-get(1)** Clone a Git repository under a configured directory - **git-gh-pages(1)** Create the GitHub Pages branch - **git-graft(1)** Merge and destroy a given branch - **git-guilt(1)** calculate change between two revisions diff --git a/man/git-get.1 b/man/git-get.1 new file mode 100644 index 000000000..c27851743 --- /dev/null +++ b/man/git-get.1 @@ -0,0 +1,28 @@ +.\" generated with Ronn-NG/v0.9.1 +.\" http://github.com/apjanke/ronn-ng/tree/0.9.1 +.TH "GIT\-GET" "1" "May 2023" "" "Git Extras" +.SH "NAME" +\fBgit\-get\fR \- Clone a Git repository under a directory +.SH "SYNOPSIS" +\fBgit\-get\fR +.SH "DESCRIPTION" +Clones a Git repository under the directory specified by the Git configuration \fBgit\-extras\.get\.clone\-path\fR +.SH "EXAMPLES" +.nf +$ git config \-\-add git\-extras\.get\.clone\-path "$HOME/some\-dir" +$ git get 'https://github\.com/hyperupcall/bake' +Cloning into '/home//some\-dir/bake'\|\.\|\.\|\. +remote: Enumerating objects: 1199, done\. +remote: Counting objects: 100% (378/378), done\. +remote: Compressing objects: 100% (174/174), done\. +remote: Total 1199 (delta 163), reused 357 (delta 146), pack\-reused 821 +Receiving objects: 100% (1199/1199), 3\.05 MiB | 9\.85 MiB/s, done\. +Resolving deltas: 100% (515/515), done\. +$ +.fi +.SH "AUTHOR" +Written by Edwin Kofler <\fIedwin@kofler\.dev\fR> +.SH "REPORTING BUGS" +<\fIhttps://github\.com/tj/git\-extras/issues\fR> +.SH "SEE ALSO" +<\fIhttps://github\.com/tj/git\-extras\fR> diff --git a/man/git-get.html b/man/git-get.html new file mode 100644 index 000000000..8ae59156d --- /dev/null +++ b/man/git-get.html @@ -0,0 +1,119 @@ + + + + + + git-get(1) - Clone a Git repository under a directory + + + + +
    + + + +
      +
    1. git-get(1)
    2. +
    3. Git Extras
    4. +
    5. git-get(1)
    6. +
    + + + +

    NAME

    +

    + git-get - Clone a Git repository under a directory +

    +

    SYNOPSIS

    + +

    git-get

    + +

    DESCRIPTION

    + +

    Clones a Git repository under the directory specified by the Git configuration git-extras.get.clone-path

    + +

    EXAMPLES

    + +
    $ git config --add git-extras.get.clone-path "$HOME/some-dir"
    +$ git get 'https://github.com/hyperupcall/bake'
    +Cloning into '/home/<user>/some-dir/bake'...
    +remote: Enumerating objects: 1199, done.
    +remote: Counting objects: 100% (378/378), done.
    +remote: Compressing objects: 100% (174/174), done.
    +remote: Total 1199 (delta 163), reused 357 (delta 146), pack-reused 821
    +Receiving objects: 100% (1199/1199), 3.05 MiB | 9.85 MiB/s, done.
    +Resolving deltas: 100% (515/515), done.
    +$
    +
    + +

    AUTHOR

    + +

    Written by Edwin Kofler <edwin@kofler.dev>

    + +

    REPORTING BUGS

    + +

    <https://github.com/tj/git-extras/issues>

    + +

    SEE ALSO

    + +

    <https://github.com/tj/git-extras>

    + +
      +
    1. +
    2. May 2023
    3. +
    4. git-get(1)
    5. +
    + +
    + + diff --git a/man/git-get.md b/man/git-get.md new file mode 100644 index 000000000..cdb3497a5 --- /dev/null +++ b/man/git-get.md @@ -0,0 +1,35 @@ +git-get(1) -- Clone a Git repository under a configured directory +================================================= + +## SYNOPSIS + +`git-get` + +## DESCRIPTION + + Clones a Git repository under the directory specified by the Git configuration `git-extras.get.clone-path` + +## EXAMPLES + + $ git config --add git-extras.get.clone-path "$HOME/some-dir" + $ git get 'https://github.com/hyperupcall/bake' + Cloning into '/home//some-dir/bake'... + remote: Enumerating objects: 1199, done. + remote: Counting objects: 100% (378/378), done. + remote: Compressing objects: 100% (174/174), done. + remote: Total 1199 (delta 163), reused 357 (delta 146), pack-reused 821 + Receiving objects: 100% (1199/1199), 3.05 MiB | 9.85 MiB/s, done. + Resolving deltas: 100% (515/515), done. + $ + +## AUTHOR + +Written by Edwin Kofler <> + +## REPORTING BUGS + +<> + +## SEE ALSO + +<> diff --git a/man/index.txt b/man/index.txt index 0e0381696..f54005e5b 100644 --- a/man/index.txt +++ b/man/index.txt @@ -28,6 +28,7 @@ git-feature(1) git-feature git-force-clone(1) git-force-clone git-fork(1) git-fork git-fresh-branch(1) git-fresh-branch +git-get(1) git-get git-gh-pages(1) git-gh-pages git-graft(1) git-graft git-guilt(1) git-guilt diff --git a/not_need_git_repo b/not_need_git_repo index b66a02967..f1c65d091 100644 --- a/not_need_git_repo +++ b/not_need_git_repo @@ -5,6 +5,7 @@ git-bulk git-extras git-force-clone git-fork +git-get git-ignore git-setup git-standup