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
|
||||
|
||||
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 \
|
||||
| sed -Ez '
|
||||
s:(^|\n|,)refs/(heads|remotes/):\1:g
|
||||
|
||||
Reference in New Issue
Block a user