Support the browsing of other Git remotes/branches.
This commit is contained in:
parent
5bb9a3e4b5
commit
66c4aae59e
|
@ -182,6 +182,8 @@ alias ghc='git remote prune'
|
||||||
compdef _git ghc=git-remote
|
compdef _git ghc=git-remote
|
||||||
alias ghs='git remote show'
|
alias ghs='git remote show'
|
||||||
compdef _git ghs=git-remote
|
compdef _git ghs=git-remote
|
||||||
|
alias ghb='git-hub'
|
||||||
|
compdef _git-hub ghb=git-hub
|
||||||
|
|
||||||
# Stash (t)
|
# Stash (t)
|
||||||
alias gta='git stash apply'
|
alias gta='git stash apply'
|
||||||
|
|
29
plugins/git/completions/_git-hub
Normal file
29
plugins/git/completions/_git-hub
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#compdef git-hub
|
||||||
|
#autoload
|
||||||
|
|
||||||
|
local state remotes remote branches ret=1
|
||||||
|
|
||||||
|
_arguments -C -s -S \
|
||||||
|
'1::args:->remote' \
|
||||||
|
'2::args:->branch' && ret=0
|
||||||
|
|
||||||
|
case "$state" in
|
||||||
|
(remote)
|
||||||
|
remotes=($(
|
||||||
|
git config -l \
|
||||||
|
| grep 'remote\.[^.]*\.url' \
|
||||||
|
| cut -d'.' -f2))
|
||||||
|
_describe -t branch 'remotes' remotes && ret=0
|
||||||
|
;;
|
||||||
|
(branch)
|
||||||
|
remote="$words[(($CURRENT - 1))]"
|
||||||
|
branches=($(
|
||||||
|
git branch -a \
|
||||||
|
| grep "remotes/${remote}" \
|
||||||
|
| sed -e 's/[ \*]*//g' -e "s:remotes/${remote}/::g"
|
||||||
|
))
|
||||||
|
_describe -t branch 'branches' branches && ret=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return $ret
|
|
@ -1,12 +1,30 @@
|
||||||
# Open the GitHub repository in the browser.
|
# Open the GitHub repository in the browser.
|
||||||
local url=$(
|
local remote branches branch current_branch url
|
||||||
|
|
||||||
|
remote="${1:-origin}"
|
||||||
|
url=$(
|
||||||
git config -l \
|
git config -l \
|
||||||
| grep "remote.origin.url" \
|
| grep "remote.${remote}.url" \
|
||||||
| sed -En "s/remote.origin.url=(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p"
|
| sed -En "s/remote.${remote}.url=(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p"
|
||||||
)
|
)
|
||||||
|
branches=($(
|
||||||
|
git branch -a \
|
||||||
|
| grep "remotes/${remote}" \
|
||||||
|
| sed -e 's/[ \*]*//g' -e "s:remotes/${remote}/::g"
|
||||||
|
))
|
||||||
|
current_branch="$(git-branch)"
|
||||||
|
branch="${2:-master}"
|
||||||
|
|
||||||
|
if [[ -z "$2" ]]; then
|
||||||
|
if (( $branches[(I)$current_branch] != 0 )); then
|
||||||
|
branch="$current_branch"
|
||||||
|
else
|
||||||
|
branch='master'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -n "$url" ]]; then
|
if [[ -n "$url" ]]; then
|
||||||
url="${url}/tree/${$(git-branch):-master}"
|
url="${url}/tree/${branch}"
|
||||||
|
|
||||||
if (( $+commands[$BROWSER] )); then
|
if (( $+commands[$BROWSER] )); then
|
||||||
"$BROWSER" "$url"
|
"$BROWSER" "$url"
|
||||||
|
|
Loading…
Reference in a new issue