zsh/aliases/git
2023-04-22 09:39:04 +02:00

91 lines
2.3 KiB
Bash

#!/bin/zsh
ginit() {
git init;
git add ${*:-"."};
git commit -a -m "Initial Commit"
}
# define a function that calls different versioning systems depending on
# detected vcs for current directory
# usage: defvcsfun <command name> <parameters for git> <parameters for hg> <parameters for svn>
# see below for examples
defvcsfun() {
local name=$1; shift
local args=($@)
eval "$name() {
case \$VCS_DETECTED in
git)
git ${=args[1]} \"\$@\";;
hg)
hg ${=args[2]} \"\$@\";;
svn)
svn ${=args[3]} \"\$@\";;
*)
echo \"unknown vcs: \$VCS_DETECTED\";;
esac
}"
}
#VCS command git hg svn
defvcsfun gst "status -s" "status" "status"
defvcsfun gpl "pull --autostash" "pull" "update"
defvcsfun gcm "commit" "commit" "commit"
defvcsfun ga "add" "add" "add"
defvcsfun gpu "push" "push" "i_am_not_distributed_please_dont_push_me"
alias gco="git checkout"
alias gca="git commit -a"
alias gap="git add --patch"
gls() {
zmodload zsh/mapfile
gitignore="$(git rev-parse --show-toplevel 2>/dev/null)/.gitignore"
globalgitignore="$(git config core.excludesfile)"
typeset -a ignores
for i in $gitignore $globalgitignore; do
if [[ -e $i ]]; then
for ignore in "${(f)mapfile[$i]}"; do
ignores+="--ignore=${ignore%/}"
done
fi
done
ls --color=auto -h $ignores "$@"
}
alias gll="gls -l"
alias glll="gls -la"
gclone() {
local oldurl
local url
if [[ -n $1 ]]; then
url=$1
else
echo "${fg_bold[green]}Getting url from cliboard:"
url=$(xclip -o -selection clipboard)
echo $url
fi
shift
local git_hosts=(
gitlab2.informatik.uni-wuerzburg.de
github.com
)
for host in $git_hosts; do
if [[ "$url" =~ "^https://$host" ]]; then
oldurl=$url
url=$(echo ${url//https:\/\/$host\//git@$host:} | grep -oe '^[^/]*/[^/]*')
fi
done
if [[ -n "$oldurl" ]]; then
echo "Correcting url to $url"
fi
git clone $url "$@"
}