Dotfiles/site-modules/core/files/oh-my-zsh/custom/git.zsh
Ade Attwood bc512c7e5d feat(shell): add my-clone command for cloning git repertories
When cloning a repo I have all of the repertories structured on the file system
by "host" "group" then "name". This command will automatically clone the repo
into the correct directory based on the name and the move into the cloned repo
directory.

An example of a repo to be cloned is the dotfiles repo has the URL of
`git@gitlab.com:AdeAttwood/dotfiles.git` so on the file system it will be in the
source directory `gitlab.com/AdeAttwood/dotfiles`. This keep all of the repos
well structured and searchable.
2021-11-21 16:06:21 +00:00

53 lines
1.5 KiB
Bash

source $ZSH/lib/git.zsh
alias gcon="git diff --name-only --diff-filter=U"
alias gml="git merge --log"
alias gl="git --no-pager log --format=\"%C(red)%h%Creset %s %Cgreen(%cr)%Creset %C(bold blue)<%an>%Creset\" --reverse --max-count=40"
alias gap="git add -p"
alias gs="gss"
function git_get_fetch_url() {
git remote show origin -n | awk '/Fetch URL:/{print $3}'
}
function gi() {
curl -sL https://www.gitignore.io/api/$@;
}
function ggpushpr() {
if [[ -z "$1" ]]; then
ggpush -o merge_request.merge_when_pipeline_succeeds -o merge_request.create -o merge_request.remove_source_branch
else
ggpush -o merge_request.merge_when_pipeline_succeeds -o merge_request.create -o merge_request.remove_source_branch -o merge_request.target="$1"
fi
}
function grc() {
cat "$(git rev-parse --show-toplevel)/.git/COMMIT_EDITMSG" \
| grep -B 99999999 '# ------------------------ >8 ------------------------' \
> "$(git rev-parse --show-toplevel)/.git/COMMIT_TEMPLATE"
git commit -t "$(git rev-parse --show-toplevel)/.git/COMMIT_TEMPLATE"
}
function my-clone() {
local url="$1"
local re="^(https|git)(:\/\/|@)([^\/:]+)[\/:](.*?).git$"
if [[ -z "$url" ]]; then
echo "ERROR: Invalid url"
return
fi
if [[ $url =~ $re ]]; then
local protocol="${match[1]}"
local separator="${match[2]}"
local hostname="${match[3]}"
local repo="${match[4]}"
full_path=~s/$hostname/$repo
git clone $url ~s/$hostname/$repo
cd ~s/$hostname/$repo
fi
}