Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Implement git-get command #1045

Merged
merged 9 commits into from
Aug 12, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions Commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -889,6 +890,15 @@ Create empty local branch `name`:
$ git fresh-branch docs
```

## git get

Clone repository into a subdirectory of the configured path, `"$HOME/some-dir"`:

```bash
$ git config --add git-extras.get.clone-path "$HOME/some-dir"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Look like we need to add --global here?

$ git get 'https://github.com/hyperupcall/bake'
```

## git guilt

Calculate the change in blame between two revisions
Expand Down
36 changes: 36 additions & 0 deletions bin/git-get
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


_usage() {
printf '%s\n' "usage: ${0##*/} <url>
usage: ${0##*/} --help

Clone a repository in a particular directory."
}

url=$1

if (( $# == 0)); then
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better to check num of args before assigning to $url

Copy link
Collaborator Author

@hyperupcall hyperupcall Aug 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My mistake - it has been fixed now.

_usage
exit 0
fi

for arg; do
if [ "$arg" = '-h' ] || [ "$arg" = '--help' ]; then
_usage
exit 0
fi
done

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"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you add a feature to pass options to git clone or add a TODO comment?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good 👍

1 change: 1 addition & 0 deletions etc/git-extras-completion.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,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' \
Expand Down
1 change: 1 addition & 0 deletions etc/git-extras.fish
Original file line number Diff line number Diff line change
Expand Up @@ -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" \
Expand Down
14 changes: 9 additions & 5 deletions man/git-extras.1
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
7 changes: 6 additions & 1 deletion man/git-extras.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/git-extras.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 28 additions & 0 deletions man/git-get.1
Original file line number Diff line number Diff line change
@@ -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/<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\.
$
.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>
119 changes: 119 additions & 0 deletions man/git-get.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 35 additions & 0 deletions man/git-get.md
Original file line number Diff line number Diff line change
@@ -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/<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 &lt;<[email protected]>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
1 change: 1 addition & 0 deletions man/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions not_need_git_repo
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ git-bulk
git-extras
git-force-clone
git-fork
git-get
git-setup
git-standup