git,zsh:autoload: Move git-track into own function

Move `git-track` into its own autoloadable function.
This way it is
better maintainable as in one-liner format and brings the possibility of
having more complexity (e.g. for better portability).
By that it is also now executable as `git-track` as well as `git track`
as before.
This commit is contained in:
2022-01-31 12:50:54 +01:00
parent 271f5bcf25
commit 7f52c7a4cb
2 changed files with 16 additions and 1 deletions

View File

@@ -6,7 +6,7 @@
fixes = log -1 --pretty=fixes fixes = log -1 --pretty=fixes
root = rev-parse --show-toplevel root = rev-parse --show-toplevel
spull = "!__git_spull() { git pull \"$@\" && git submodule sync --recursive && git submodule update --init --recursive; }; __git_spull" spull = "!__git_spull() { git pull \"$@\" && git submodule sync --recursive && git submodule update --init --recursive; }; __git_spull"
track = "!git for-each-ref --format='%(upstream),%(refname)' refs/heads refs/remotes | sort -d | sed -Ez 's:(^|\\n|,)refs/(heads|remotes/):\\1:g; s:(^|\\n),([^/][^\\n]*):\\1\\2,:g; s:,/:,:g; s:(^|\\n)([^,]+),\\n\\2:\\1\\2:g; s:(^|\\n)([^/,]*)([^\\n]*\\n\\2(,|/))*:\\n&:g; s:\\n+$:\\n:' | (echo remote,local; cat) | column -tdLs, -Na,b -Ob,a | sed '2d; 1{p;s/./―/g}'" track = "!\"${XDG_CONFIG_HOME:-$HOME/.config}/zsh/autoload/git/git-track\""
[color "status"] [color "status"]
added = 076 added = 076
untracked = 014 untracked = 014

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env zsh
git for-each-ref --format='%(upstream),%(refname)' refs/heads refs/remotes \
| sort -d \
| sed -Ez '
s:(^|\n|,)refs/(heads|remotes/):\1:g
s:(^|\n),([^/][^\n]*):\1\2,:g
s:,/:,:g
s:(^|\n)([^,]+),\n\2:\1\2:g
s:(^|\n)([^/,]*)([^\n]*\n\2(,|/))*:\n&:g
s:\n+$:\n:
' \
| (echo remote,local; cat) \
| column -tdLs, -Na,b -Ob,a \
| sed '2d; 1{p;s/./―/g}'