Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 1 | #!zsh |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 2 | # |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 3 | # Installation |
4 | # ------------ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 5 | # |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 6 | # To achieve git-flow completion nirvana: |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 7 | # |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 8 | # 0. Update your zsh's git-completion module to the newest verion. |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 9 | # From here. http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD |
10 | # | ||||
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 11 | # 1. Install this file. Either: |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 12 | # |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 13 | # a. Place it in your .zshrc: |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 14 | # |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 15 | # b. Or, copy it somewhere (e.g. ~/.git-flow-completion.zsh) and put the following line in |
16 | # your .zshrc: | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 17 | # |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 18 | # source ~/.git-flow-completion.zsh |
19 | # | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 20 | # c. Or, use this file as a oh-my-zsh plugin. |
Zifei Tong | 5eda741 | 2010-08-22 13:22:27 +0800 | [diff] [blame] | 21 | # |
22 | |||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 23 | _git-flow () |
Zifei Tong | 4b64ecc | 2010-08-21 11:20:29 +0800 | [diff] [blame] | 24 | { |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 25 | local curcontext="$curcontext" state line |
26 | typeset -A opt_args | ||||
27 | |||||
28 | _arguments -C \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 29 | ':command:->command' \ |
30 | '*::options:->options' | ||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 31 | |
32 | case $state in | ||||
33 | (command) | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 34 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 35 | local -a subcommands |
36 | subcommands=( | ||||
37 | 'init:Initialize a new git repo with support for the branching model.' | ||||
38 | 'feature:Manage your feature branches.' | ||||
39 | 'release:Manage your release branches.' | ||||
40 | 'hotfix:Manage your hotfix branches.' | ||||
41 | 'support:Manage your support branches.' | ||||
42 | 'version:Shows version information.' | ||||
43 | ) | ||||
44 | _describe -t commands 'git flow' subcommands | ||||
45 | ;; | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 46 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 47 | (options) |
48 | case $line[1] in | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 49 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 50 | (init) |
51 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 52 | -f'[Force setting of gitflow branches, even if already configured]' |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 53 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 54 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 55 | (version) |
56 | ;; | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 57 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 58 | (hotfix) |
59 | __git-flow-hotfix | ||||
60 | ;; | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 61 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 62 | (release) |
63 | __git-flow-release | ||||
64 | ;; | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 65 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 66 | (feature) |
67 | __git-flow-feature | ||||
68 | ;; | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 69 | esac |
70 | ;; | ||||
71 | esac | ||||
Zifei Tong | 4b64ecc | 2010-08-21 11:20:29 +0800 | [diff] [blame] | 72 | } |
73 | |||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 74 | __git-flow-release () |
75 | { | ||||
76 | local curcontext="$curcontext" state line | ||||
77 | typeset -A opt_args | ||||
78 | |||||
79 | _arguments -C \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 80 | ':command:->command' \ |
81 | '*::options:->options' | ||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 82 | |
83 | case $state in | ||||
84 | (command) | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 85 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 86 | local -a subcommands |
87 | subcommands=( | ||||
Justin Hileman | 66847ba | 2011-01-18 09:49:58 -0500 | [diff] [blame] | 88 | 'start:Start a new release branch.' |
89 | 'finish:Finish a release branch.' | ||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 90 | 'list:List all your release branches. (Alias to `git flow release`)' |
91 | ) | ||||
92 | _describe -t commands 'git flow release' subcommands | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 93 | _arguments \ |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 94 | -v'[Verbose (more) output]' |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 95 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 96 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 97 | (options) |
98 | case $line[1] in | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 99 | |
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 100 | (start) |
101 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 102 | -F'[Fetch from origin before performing finish]'\ |
103 | ':version:__git_flow_version_list' | ||||
104 | ;; | ||||
105 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 106 | (finish) |
107 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 108 | -F'[Fetch from origin before performing finish]' \ |
109 | -s'[Sign the release tag cryptographically]'\ | ||||
110 | -u'[Use the given GPG-key for the digital signature (implies -s)]'\ | ||||
111 | -m'[Use the given tag message]'\ | ||||
112 | -p'[Push to $ORIGIN after performing finish]'\ | ||||
113 | ':version:__git_flow_version_list' | ||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 114 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 115 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 116 | *) |
117 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 118 | -v'[Verbose (more) output]' |
119 | ;; | ||||
120 | esac | ||||
121 | ;; | ||||
122 | esac | ||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 123 | } |
124 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 125 | __git-flow-hotfix () |
126 | { | ||||
127 | local curcontext="$curcontext" state line | ||||
128 | typeset -A opt_args | ||||
129 | |||||
130 | _arguments -C \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 131 | ':command:->command' \ |
132 | '*::options:->options' | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 133 | |
134 | case $state in | ||||
135 | (command) | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 136 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 137 | local -a subcommands |
138 | subcommands=( | ||||
Justin Hileman | 66847ba | 2011-01-18 09:49:58 -0500 | [diff] [blame] | 139 | 'start:Start a new hotfix branch.' |
140 | 'finish:Finish a hotfix branch.' | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 141 | 'list:List all your hotfix branches. (Alias to `git flow hotfix`)' |
142 | ) | ||||
143 | _describe -t commands 'git flow hotfix' subcommands | ||||
144 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 145 | -v'[Verbose (more) output]' |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 146 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 147 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 148 | (options) |
149 | case $line[1] in | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 150 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 151 | (start) |
152 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 153 | -F'[Fetch from origin before performing finish]'\ |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 154 | ':hotfix:__git_flow_version_list'\ |
155 | ':branch-name:__git_branch_names' | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 156 | ;; |
157 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 158 | (finish) |
159 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 160 | -F'[Fetch from origin before performing finish]' \ |
161 | -s'[Sign the release tag cryptographically]'\ | ||||
162 | -u'[Use the given GPG-key for the digital signature (implies -s)]'\ | ||||
163 | -m'[Use the given tag message]'\ | ||||
164 | -p'[Push to $ORIGIN after performing finish]'\ | ||||
165 | ':hotfix:__git_flow_hotfix_list' | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 166 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 167 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 168 | *) |
169 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 170 | -v'[Verbose (more) output]' |
171 | ;; | ||||
172 | esac | ||||
173 | ;; | ||||
174 | esac | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 175 | } |
176 | |||||
177 | __git-flow-feature () | ||||
178 | { | ||||
179 | local curcontext="$curcontext" state line | ||||
180 | typeset -A opt_args | ||||
181 | |||||
182 | _arguments -C \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 183 | ':command:->command' \ |
184 | '*::options:->options' | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 185 | |
186 | case $state in | ||||
187 | (command) | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 188 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 189 | local -a subcommands |
190 | subcommands=( | ||||
Justin Hileman | 66847ba | 2011-01-18 09:49:58 -0500 | [diff] [blame] | 191 | 'start:Start a new feature branch.' |
192 | 'finish:Finish a feature branch.' | ||||
MURAOKA Yusuke | c58f8c2 | 2011-01-18 06:42:31 +0900 | [diff] [blame] | 193 | 'list:List all your feature branches. (Alias to `git flow feature`)' |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 194 | 'publish: public' |
195 | 'track: track' | ||||
196 | 'diff: diff' | ||||
197 | 'rebase: rebase' | ||||
198 | 'checkout: checkout' | ||||
199 | 'pull: pull' | ||||
200 | ) | ||||
MURAOKA Yusuke | c58f8c2 | 2011-01-18 06:42:31 +0900 | [diff] [blame] | 201 | _describe -t commands 'git flow feature' subcommands |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 202 | _arguments \ |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 203 | -v'[Verbose (more) output]' |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 204 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 205 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 206 | (options) |
207 | case $line[1] in | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 208 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 209 | (start) |
210 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 211 | -F'[Fetch from origin before performing finish]'\ |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 212 | ':feature:__git_flow_feature_list'\ |
213 | ':branch-name:__git_branch_names' | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 214 | ;; |
215 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 216 | (finish) |
217 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 218 | -F'[Fetch from origin before performing finish]' \ |
219 | -r'[Rebase instead of merge]'\ | ||||
220 | ':feature:__git_flow_feature_list' | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 221 | ;; |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 222 | |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 223 | (publish) |
224 | _arguments \ | ||||
225 | ':feature:__git_flow_feature_list'\ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 226 | ;; |
227 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 228 | (track) |
229 | _arguments \ | ||||
230 | ':feature:__git_flow_feature_list'\ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 231 | ;; |
232 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 233 | (diff) |
234 | _arguments \ | ||||
235 | ':branch:__git_branch_names'\ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 236 | ;; |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 237 | |
238 | (rebase) | ||||
239 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 240 | -i'[Do an interactive rebase]' \ |
241 | ':branch:__git_branch_names' | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 242 | ;; |
243 | |||||
244 | (checkout) | ||||
245 | _arguments \ | ||||
Vincent Driessen | bee8218 | 2010-08-22 21:01:01 +0800 | [diff] [blame] | 246 | ':branch:__git_flow_feature_list'\ |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 247 | ;; |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 248 | |
249 | (pull) | ||||
250 | _arguments \ | ||||
251 | ':remote:__git_remotes'\ | ||||
252 | ':branch:__git_branch_names' | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 253 | ;; |
254 | |||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 255 | *) |
256 | _arguments \ | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 257 | -v'[Verbose (more) output]' |
258 | ;; | ||||
259 | esac | ||||
260 | ;; | ||||
261 | esac | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 262 | } |
263 | |||||
264 | __git_flow_version_list () | ||||
265 | { | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 266 | local expl |
267 | declare -a versions | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 268 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 269 | versions=(${${(f)"$(_call_program versions git flow release list 2> /dev/null | tr -d ' |*')"}}) |
270 | __git_command_successful || return | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 271 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 272 | _wanted versions expl 'version' compadd $versions |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 273 | } |
274 | |||||
275 | __git_flow_feature_list () | ||||
276 | { | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 277 | local expl |
278 | declare -a features | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 279 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 280 | features=(${${(f)"$(_call_program features git flow feature list 2> /dev/null | tr -d ' |*')"}}) |
281 | __git_command_successful || return | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 282 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 283 | _wanted features expl 'feature' compadd $features |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 284 | } |
285 | |||||
286 | __git_remotes () { | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 287 | local expl gitdir remotes |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 288 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 289 | gitdir=$(_call_program gitdir git rev-parse --git-dir 2>/dev/null) |
290 | __git_command_successful || return | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 291 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 292 | remotes=(${${(f)"$(_call_program remotes git config --get-regexp '"^remote\..*\.url$"')"}//#(#b)remote.(*).url */$match[1]}) |
293 | __git_command_successful || return | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 294 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 295 | # TODO: Should combine the two instead of either or. |
296 | if (( $#remotes > 0 )); then | ||||
297 | _wanted remotes expl remote compadd $* - $remotes | ||||
298 | else | ||||
299 | _wanted remotes expl remote _files $* - -W "($gitdir/remotes)" -g "$gitdir/remotes/*" | ||||
300 | fi | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 301 | } |
302 | |||||
303 | __git_flow_hotfix_list () | ||||
304 | { | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 305 | local expl |
306 | declare -a hotfixes | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 307 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 308 | hotfixes=(${${(f)"$(_call_program hotfixes git flow hotfix list 2> /dev/null | tr -d ' |*')"}}) |
309 | __git_command_successful || return | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 310 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 311 | _wanted hotfixes expl 'hotfix' compadd $hotfixes |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 312 | } |
313 | |||||
314 | __git_branch_names () { | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 315 | local expl |
316 | declare -a branch_names | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 317 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 318 | branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) |
319 | __git_command_successful || return | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 320 | |
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 321 | _wanted branch-names expl branch-name compadd $* - $branch_names |
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 322 | } |
323 | |||||
324 | __git_command_successful () { | ||||
Justin Hileman | 56ff8b4 | 2011-01-18 09:58:31 -0500 | [diff] [blame] | 325 | if (( ${#pipestatus:#0} > 0 )); then |
326 | _message 'not a git repository' | ||||
327 | return 1 | ||||
328 | fi | ||||
329 | return 0 | ||||
Zifei Tong | 9414b22 | 2010-08-22 12:41:36 +0800 | [diff] [blame] | 330 | } |
331 | |||||
Zifei Tong | 85b504a | 2010-08-22 10:37:55 +0800 | [diff] [blame] | 332 | zstyle ':completion:*:*:git:*' user-commands flow:'description for foo' |