git:track: List remote refs only on request
List only the local heads by default and require the remote refs to be passed as arguments. For example: git track origin To make this easier, add support of an `--all` flag to list all remote refs.
This commit is contained in:
@@ -1,6 +1,20 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
git for-each-ref --format='%(upstream),%(refname)' refs/heads refs/remotes \
|
local idx="${@[(ei)--help]}"
|
||||||
|
local flags_end="${@[(ei)--]}"
|
||||||
|
if (( idx < flags_end )); then
|
||||||
|
printf "Usage: $0 [--all] [REMOTE]..."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
idx="${@[(ei)--all]}"
|
||||||
|
if (( idx < flags_end )); then
|
||||||
|
# Replace --all flag with empty string. Will be replaced with
|
||||||
|
# refs/remotes/ later so that all remotes are listed
|
||||||
|
set -- "${@[1,$((idx-1))]}" "" "${@[$((idx+1)),-1]}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git for-each-ref --format='%(upstream),%(refname)' refs/heads "${@/#/refs/remotes/}" \
|
||||||
| sort -d \
|
| sort -d \
|
||||||
| sed -Ez '
|
| sed -Ez '
|
||||||
s:(^|\n|,)refs/(heads|remotes/):\1:g
|
s:(^|\n|,)refs/(heads|remotes/):\1:g
|
||||||
|
|||||||
Reference in New Issue
Block a user