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 3 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 `"$HOME/some-dir/<repository_name>"`:
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 mention that this command can clone repo to the configured path, as git clone already support cloning to a specific path.


```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
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 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 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 @@ -7,3 +7,4 @@ git-force-clone
git-fork
git-setup
git-standup
git-get
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please put it in alphabetical order