1 # zaw source for git branches sorted by commit date
3 function zaw-src-git-recent-branches
() {
4 git rev-parse
--git-dir >/dev
/null
2>&1
6 local branches
="$(git for-each-ref --format='%(refname)' --sort=-committerdate refs/heads)"
7 : ${(A)candidates::=${${(f)${branches}}#refs/}}
8 : ${(A)cand_descriptions::=${${(f)${branches}}#refs/(remotes|heads|tags)/}}
12 zaw-src-git-branches-checkout \
13 zaw-src-git-branches-simple-checkout \
14 zaw-callback-append-to-buffer \
15 zaw-src-git-branches-merge \
16 zaw-src-git-branches-merge-rebase \
17 zaw-src-git-branches-merge-no-ff \
18 zaw-src-git-branches-diff \
19 zaw-src-git-branches-diff-stat \
20 zaw-src-git-branches-reset \
21 zaw-src-git-branches-rebase \
22 zaw-src-git-branches-rebase-interactive \
23 zaw-src-git-branches-create \
24 zaw-src-git-branches-reset-hard \
25 zaw-src-git-branches-delete \
26 zaw-src-git-branches-delete-force
)
30 "append to edit buffer" \
38 "rebase interactive from..." \
39 "create new branch from..." \
46 function zaw-src-git-recent-all-branches
() {
47 git rev-parse
--git-dir >/dev
/null
2>&1
48 if [[ $?
== 0 ]]; then
49 local branches
="$(git for-each-ref --format='%(refname)' --sort=-committerdate refs/heads refs/remotes)"
50 : ${(A)candidates::=${${(f)${branches}}#refs/}}
51 : ${(A)cand_descriptions::=${${(f)${branches}}#refs/(remotes|heads|tags)/}}
55 zaw-src-git-branches-checkout \
56 zaw-src-git-branches-simple-checkout \
57 zaw-callback-append-to-buffer \
58 zaw-src-git-branches-merge \
59 zaw-src-git-branches-merge-rebase \
60 zaw-src-git-branches-merge-no-ff \
61 zaw-src-git-branches-diff \
62 zaw-src-git-branches-diff-stat \
63 zaw-src-git-branches-reset \
64 zaw-src-git-branches-rebase \
65 zaw-src-git-branches-rebase-interactive \
66 zaw-src-git-branches-create \
67 zaw-src-git-branches-reset-hard \
68 zaw-src-git-branches-delete \
69 zaw-src-git-branches-delete-force
)
73 "append to edit buffer" \
81 "rebase interactive from..." \
82 "create new branch from..." \
89 function zaw-src-git-recent-branches-checkout
() {
91 local b_name
=${1#(heads|remotes|tags)/}
94 BUFFER
="git checkout $b_name"
98 BUFFER
="git checkout -t $b_name"
104 function zaw-src-git-branches-diff
() {
105 local b_name
=${1#(heads|remotes|tags)/}
106 BUFFER
="git diff $b_name"
110 function zaw-src-git-branches-diff-stat
() {
111 local b_name
=${1#(heads|remotes|tags)/}
112 BUFFER
="git diff --stat $b_name"
116 zaw-register-src
-n git-recent-branches zaw-src-git-recent-branches
117 zaw-register-src
-n git-recent-all-branches zaw-src-git-recent-all-branches