eac_tools 0.86.1 → 0.86.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (377) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +44 -39
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +2 -2
  5. data/sub/avm/lib/avm/rspec/setup/launcher.rb +1 -0
  6. data/sub/avm/lib/avm/scms/base/branches.rb +22 -0
  7. data/sub/avm/lib/avm/scms/base/remotes.rb +22 -0
  8. data/sub/avm/lib/avm/scms/branch.rb +26 -0
  9. data/sub/avm/lib/avm/scms/remote.rb +11 -0
  10. data/sub/avm/lib/avm/sources/issues/deliver.rb +52 -0
  11. data/sub/avm/lib/avm/sources/issues.rb +11 -0
  12. data/sub/avm/lib/avm/version.rb +1 -1
  13. data/sub/avm-eac_postgresql_base0/Gemfile +2 -2
  14. data/sub/avm-eac_postgresql_base0/avm-eac_postgresql_base0.gemspec +4 -3
  15. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/assert.rb +2 -2
  16. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/commands.rb +4 -4
  17. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb +4 -4
  18. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/version.rb +1 -1
  19. data/sub/avm-eac_postgresql_base0/spec/rubocop_spec.rb +1 -1
  20. data/sub/avm-eac_postgresql_base0/spec/spec_helper.rb +1 -1
  21. data/sub/avm-git/avm-git.gemspec +23 -0
  22. data/sub/avm-git/lib/avm/git/application_scms/base/assert_main_at.rb +49 -0
  23. data/sub/avm-git/lib/avm/git/application_scms/base.rb +21 -0
  24. data/sub/{avm-eac_php_base0/lib/avm/eac_php_base0/sources.rb → avm-git/lib/avm/git/application_scms.rb} +2 -2
  25. data/sub/avm-git/lib/avm/git/commit/class_methods.rb +31 -0
  26. data/sub/avm-git/lib/avm/git/commit/diff_tree_line.rb +32 -0
  27. data/sub/avm-git/lib/avm/git/commit/file.rb +46 -0
  28. data/sub/avm-git/lib/avm/git/commit.rb +59 -0
  29. data/sub/avm-git/lib/avm/git/issue/complete/commits.rb +42 -0
  30. data/sub/avm-git/lib/avm/git/issue/complete/git_subrepos.rb +23 -0
  31. data/sub/avm-git/lib/avm/git/issue/complete/local_branch.rb +61 -0
  32. data/sub/avm-git/lib/avm/git/issue/complete/local_tag.rb +39 -0
  33. data/sub/avm-git/lib/avm/git/issue/complete/push.rb +60 -0
  34. data/sub/avm-git/lib/avm/git/issue/complete/remote.rb +33 -0
  35. data/sub/avm-git/lib/avm/git/issue/complete/test.rb +40 -0
  36. data/sub/avm-git/lib/avm/git/issue/complete/tracker.rb +28 -0
  37. data/sub/avm-git/lib/avm/git/issue/complete/validation.rb +39 -0
  38. data/sub/avm-git/lib/avm/git/issue/complete/validations.rb +53 -0
  39. data/sub/avm-git/lib/avm/git/issue/complete/working_tree.rb +19 -0
  40. data/sub/avm-git/lib/avm/git/issue/complete.rb +66 -0
  41. data/sub/avm-git/lib/avm/git/issue.rb +11 -0
  42. data/sub/avm-git/lib/avm/git/launcher/base/class_methods.rb +28 -0
  43. data/sub/avm-git/lib/avm/git/launcher/base/dirty_files.rb +23 -0
  44. data/sub/avm-git/lib/avm/git/launcher/base/remotes.rb +40 -0
  45. data/sub/avm-git/lib/avm/git/launcher/base/subrepo.rb +44 -0
  46. data/sub/avm-git/lib/avm/git/launcher/base/underlying.rb +59 -0
  47. data/sub/avm-git/lib/avm/git/launcher/base.rb +87 -0
  48. data/sub/avm-git/lib/avm/git/launcher/error.rb +15 -0
  49. data/sub/avm-git/lib/avm/git/launcher/mirror_update.rb +38 -0
  50. data/sub/avm-git/lib/avm/git/launcher/publish_base.rb +131 -0
  51. data/sub/avm-git/lib/avm/git/launcher/remote.rb +55 -0
  52. data/sub/avm-git/lib/avm/git/launcher/sub_warp_base.rb +33 -0
  53. data/sub/avm-git/lib/avm/git/launcher/warp_base.rb +68 -0
  54. data/sub/avm-git/lib/avm/git/launcher.rb +7 -0
  55. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/local_project_mixin.rb +19 -0
  56. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/publish.rb +15 -0
  57. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/warp.rb +27 -0
  58. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git.rb +25 -0
  59. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/publish.rb +31 -0
  60. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/warp.rb +88 -0
  61. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo.rb +36 -0
  62. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/publish.rb +14 -0
  63. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/warp.rb +32 -0
  64. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree.rb +51 -0
  65. data/sub/avm-git/lib/avm/git/launcher_stereotypes/provider.rb +22 -0
  66. data/sub/{avm-eac_php_base0/lib/avm/eac_php_base0/file_formats.rb → avm-git/lib/avm/git/launcher_stereotypes.rb} +2 -2
  67. data/sub/avm-git/lib/avm/git/organize/reference_update.rb +34 -0
  68. data/sub/avm-git/lib/avm/git/organize/repository.rb +77 -0
  69. data/sub/{avm-eac_php_base0/lib/avm/eac_php_base0/instances.rb → avm-git/lib/avm/git/organize.rb} +2 -2
  70. data/sub/avm-git/lib/avm/git/revision_test.rb +105 -0
  71. data/sub/avm-git/lib/avm/git/scms/git/branch.rb +31 -0
  72. data/sub/avm-git/lib/avm/git/scms/git/branches.rb +20 -0
  73. data/sub/avm-git/lib/avm/git/scms/git/change_tracker.rb +36 -0
  74. data/sub/avm-git/lib/avm/git/scms/git/changed_file.rb +16 -0
  75. data/sub/avm-git/lib/avm/git/scms/git/changed_files.rb +24 -0
  76. data/sub/avm-git/lib/avm/git/scms/git/commit/deploy.rb +43 -0
  77. data/sub/avm-git/lib/avm/git/scms/git/commit/deploy_methods.rb +30 -0
  78. data/sub/avm-git/lib/avm/git/scms/git/commit.rb +67 -0
  79. data/sub/avm-git/lib/avm/git/scms/git/commit_dirty.rb +36 -0
  80. data/sub/avm-git/lib/avm/git/scms/git/commits.rb +47 -0
  81. data/sub/avm-git/lib/avm/git/scms/git/interval.rb +31 -0
  82. data/sub/avm-git/lib/avm/git/scms/git/milestones.rb +21 -0
  83. data/sub/avm-git/lib/avm/git/scms/git/remote.rb +21 -0
  84. data/sub/avm-git/lib/avm/git/scms/git/remotes.rb +32 -0
  85. data/sub/avm-git/lib/avm/git/scms/git/run_commit.rb +57 -0
  86. data/sub/avm-git/lib/avm/git/scms/git.rb +44 -0
  87. data/sub/avm-git/lib/avm/git/scms/git_sub_base/changed_file.rb +21 -0
  88. data/sub/avm-git/lib/avm/git/scms/git_sub_base/commit.rb +27 -0
  89. data/sub/avm-git/lib/avm/git/scms/git_sub_base/interval.rb +28 -0
  90. data/sub/avm-git/lib/avm/git/scms/git_sub_base.rb +33 -0
  91. data/sub/avm-git/lib/avm/git/scms/git_subrepo.rb +37 -0
  92. data/sub/avm-git/lib/avm/git/scms/git_subtree.rb +26 -0
  93. data/sub/avm-git/lib/avm/git/scms/provider.rb +21 -0
  94. data/sub/{avm-eac_php_base0/lib/avm/eac_php_base0/source_generators.rb → avm-git/lib/avm/git/scms.rb} +2 -2
  95. data/sub/avm-git/lib/avm/git/subrepo_check/parent.rb +51 -0
  96. data/sub/avm-git/lib/avm/git/subrepo_check/remote.rb +89 -0
  97. data/sub/avm-git/lib/avm/git/subrepo_check/show_result.rb +32 -0
  98. data/sub/avm-git/lib/avm/git/subrepo_check.rb +38 -0
  99. data/sub/avm-git/lib/avm/git/subrepo_checks.rb +60 -0
  100. data/sub/avm-git/lib/avm/git/vendor/github.rb +20 -0
  101. data/sub/avm-git/lib/avm/git/vendor.rb +11 -0
  102. data/sub/{avm-eac_php_base0/lib/avm/eac_php_base0 → avm-git/lib/avm/git}/version.rb +2 -2
  103. data/sub/{avm-eac_php_base0/lib/avm/eac_php_base0.rb → avm-git/lib/avm/git.rb} +1 -1
  104. data/sub/avm-git/locale/en.yml +6 -0
  105. data/sub/avm-git/locale/pt-BR.yml +6 -0
  106. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec.rb +13 -0
  107. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.source.out +1 -0
  108. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
  109. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.source.out +1 -0
  110. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
  111. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.source.out +1 -0
  112. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
  113. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.source.out +2 -0
  114. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
  115. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
  116. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
  117. data/sub/avm-git/spec/lib/avm/git/commit_spec.rb +56 -0
  118. data/sub/avm-git/spec/lib/avm/git/launcher/base_spec.rb +45 -0
  119. data/sub/avm-git/spec/lib/avm/git/scms/git/commit/deploy_spec.rb +92 -0
  120. data/sub/avm-git/spec/lib/avm/git/scms/git_spec.rb +8 -0
  121. data/sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb +8 -0
  122. data/sub/avm-git/spec/lib/avm/git/vendor/github_spec.rb +23 -0
  123. data/sub/avm-tools/avm-tools.gemspec +3 -3
  124. data/sub/avm-tools/lib/avm/tools/runner/source/issue/deliver.rb +3 -3
  125. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  126. data/sub/eac_git/Gemfile +8 -0
  127. data/sub/eac_git/eac_git.gemspec +20 -0
  128. data/sub/eac_git/lib/eac_git/executables.rb +48 -0
  129. data/sub/eac_git/lib/eac_git/local/branch.rb +47 -0
  130. data/sub/eac_git/lib/eac_git/local/commit/archive.rb +19 -0
  131. data/sub/eac_git/lib/eac_git/local/commit/changed_file.rb +46 -0
  132. data/sub/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +32 -0
  133. data/sub/eac_git/lib/eac_git/local/commit.rb +73 -0
  134. data/sub/eac_git/lib/eac_git/local/dirty_files.rb +48 -0
  135. data/sub/eac_git/lib/eac_git/local/log.rb +17 -0
  136. data/sub/eac_git/lib/eac_git/local/remote/push.rb +35 -0
  137. data/sub/eac_git/lib/eac_git/local/remote.rb +50 -0
  138. data/sub/eac_git/lib/eac_git/local/remotes.rb +20 -0
  139. data/sub/eac_git/lib/eac_git/local/subrepo/config.rb +43 -0
  140. data/sub/eac_git/lib/eac_git/local/subrepo.rb +49 -0
  141. data/sub/eac_git/lib/eac_git/local.rb +127 -0
  142. data/sub/eac_git/lib/eac_git/remote.rb +24 -0
  143. data/sub/eac_git/lib/eac_git/remote_like/ls_result.rb +20 -0
  144. data/sub/eac_git/lib/eac_git/remote_like.rb +32 -0
  145. data/sub/eac_git/lib/eac_git/rspec/setup.rb +23 -0
  146. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/directory.rb +36 -0
  147. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/file.rb +22 -0
  148. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/fs_object.rb +27 -0
  149. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/repository.rb +34 -0
  150. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb +29 -0
  151. data/sub/eac_git/lib/eac_git/rspec.rb +9 -0
  152. data/sub/eac_git/lib/eac_git/version.rb +5 -0
  153. data/sub/eac_git/lib/eac_git.rb +7 -0
  154. data/sub/eac_git/spec/lib/eac_git/executables_spec.rb +13 -0
  155. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +13 -0
  156. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +1 -0
  157. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
  158. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +1 -0
  159. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
  160. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +1 -0
  161. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
  162. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +2 -0
  163. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
  164. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
  165. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
  166. data/sub/eac_git/spec/lib/eac_git/local/commit_spec.rb +58 -0
  167. data/sub/eac_git/spec/lib/eac_git/local/dirty_files_spec.rb +20 -0
  168. data/sub/eac_git/spec/rubocop_spec.rb +3 -0
  169. data/sub/eac_git/spec/spec_helper.rb +4 -0
  170. data/sub/eac_git/vendor/git-subrepo/Changes +110 -0
  171. data/sub/eac_git/vendor/git-subrepo/Intro.pod +509 -0
  172. data/sub/eac_git/vendor/git-subrepo/License +21 -0
  173. data/sub/eac_git/vendor/git-subrepo/Makefile +82 -0
  174. data/sub/eac_git/vendor/git-subrepo/Meta +28 -0
  175. data/sub/eac_git/vendor/git-subrepo/ReadMe.pod +698 -0
  176. data/sub/eac_git/vendor/git-subrepo/doc/comparison.swim +35 -0
  177. data/sub/eac_git/vendor/git-subrepo/doc/git-subrepo.swim +608 -0
  178. data/sub/eac_git/vendor/git-subrepo/doc/intro-to-subrepo.swim +387 -0
  179. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Changes +15 -0
  180. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/License +21 -0
  181. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Makefile +45 -0
  182. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Meta +28 -0
  183. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/ReadMe.pod +77 -0
  184. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/bin/bash+ +43 -0
  185. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +61 -0
  186. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +92 -0
  187. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +134 -0
  188. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +134 -0
  189. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/base.t +12 -0
  190. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/fcopy.t +22 -0
  191. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +3 -0
  192. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +3 -0
  193. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +18 -0
  194. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +23 -0
  195. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/test.bash +70 -0
  196. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/use.t +19 -0
  197. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Changes +15 -0
  198. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/License +21 -0
  199. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Makefile +20 -0
  200. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Meta +30 -0
  201. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +115 -0
  202. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +89 -0
  203. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +15 -0
  204. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +21 -0
  205. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +45 -0
  206. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +28 -0
  207. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +77 -0
  208. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +43 -0
  209. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +61 -0
  210. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +92 -0
  211. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +134 -0
  212. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +134 -0
  213. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +12 -0
  214. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +22 -0
  215. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +3 -0
  216. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +3 -0
  217. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +18 -0
  218. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +23 -0
  219. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +70 -0
  220. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +19 -0
  221. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +15 -0
  222. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +21 -0
  223. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +37 -0
  224. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +28 -0
  225. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +66 -0
  226. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +48 -0
  227. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +153 -0
  228. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +119 -0
  229. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +13 -0
  230. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +10 -0
  231. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +20 -0
  232. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +15 -0
  233. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +9 -0
  234. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +9 -0
  235. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +10 -0
  236. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +20 -0
  237. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +13 -0
  238. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +14 -0
  239. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +7 -0
  240. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +12 -0
  241. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +8 -0
  242. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +9 -0
  243. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +95 -0
  244. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +173 -0
  245. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/fail.t +20 -0
  246. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/more.t +20 -0
  247. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/pass.t +9 -0
  248. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/setup +8 -0
  249. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +11 -0
  250. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +12 -0
  251. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +10 -0
  252. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo +1903 -0
  253. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +1 -0
  254. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +339 -0
  255. data/sub/eac_git/vendor/git-subrepo/man/man1/git-subrepo.1 +743 -0
  256. data/sub/eac_git/vendor/git-subrepo/note/0.4.0 +12 -0
  257. data/sub/eac_git/vendor/git-subrepo/note/AllGitCmds +148 -0
  258. data/sub/eac_git/vendor/git-subrepo/note/Cases +32 -0
  259. data/sub/eac_git/vendor/git-subrepo/note/Commands +33 -0
  260. data/sub/eac_git/vendor/git-subrepo/note/Dags +199 -0
  261. data/sub/eac_git/vendor/git-subrepo/note/Gists +7 -0
  262. data/sub/eac_git/vendor/git-subrepo/note/Links +25 -0
  263. data/sub/eac_git/vendor/git-subrepo/note/Plugins +10 -0
  264. data/sub/eac_git/vendor/git-subrepo/note/Spec +39 -0
  265. data/sub/eac_git/vendor/git-subrepo/note/Story1 +57 -0
  266. data/sub/eac_git/vendor/git-subrepo/note/ToDo +55 -0
  267. data/sub/eac_git/vendor/git-subrepo/note/design.swim +137 -0
  268. data/sub/eac_git/vendor/git-subrepo/note/design2.swim +85 -0
  269. data/sub/eac_git/vendor/git-subrepo/note/init-test +38 -0
  270. data/sub/eac_git/vendor/git-subrepo/note/pull-dance.txt +18 -0
  271. data/sub/eac_git/vendor/git-subrepo/note/recreate-rebase-conflict.sh +56 -0
  272. data/sub/eac_git/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +29 -0
  273. data/sub/eac_git/vendor/git-subrepo/note/test-subrepo-push.sh +69 -0
  274. data/sub/eac_git/vendor/git-subrepo/note/test.sh +58 -0
  275. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-completion.pl +210 -0
  276. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +89 -0
  277. data/sub/eac_git/vendor/git-subrepo/share/completion.bash +42 -0
  278. data/sub/eac_git/vendor/git-subrepo/share/enable-completion.sh +50 -0
  279. data/sub/eac_git/vendor/git-subrepo/share/git-completion.bash +2738 -0
  280. data/sub/eac_git/vendor/git-subrepo/share/zsh-completion/_git-subrepo +81 -0
  281. data/sub/eac_git/vendor/git-subrepo/test/branch-all.t +41 -0
  282. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list-one-path.t +43 -0
  283. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list.t +47 -0
  284. data/sub/eac_git/vendor/git-subrepo/test/branch.t +52 -0
  285. data/sub/eac_git/vendor/git-subrepo/test/clean.t +43 -0
  286. data/sub/eac_git/vendor/git-subrepo/test/clone-annotated-tag.t +45 -0
  287. data/sub/eac_git/vendor/git-subrepo/test/clone.t +107 -0
  288. data/sub/eac_git/vendor/git-subrepo/test/compile.t +19 -0
  289. data/sub/eac_git/vendor/git-subrepo/test/config.t +58 -0
  290. data/sub/eac_git/vendor/git-subrepo/test/encode.t +91 -0
  291. data/sub/eac_git/vendor/git-subrepo/test/error.t +171 -0
  292. data/sub/eac_git/vendor/git-subrepo/test/fetch.t +43 -0
  293. data/sub/eac_git/vendor/git-subrepo/test/gitignore.t +61 -0
  294. data/sub/eac_git/vendor/git-subrepo/test/init.t +64 -0
  295. data/sub/eac_git/vendor/git-subrepo/test/issue29.t +98 -0
  296. data/sub/eac_git/vendor/git-subrepo/test/issue95.t +98 -0
  297. data/sub/eac_git/vendor/git-subrepo/test/issue96.t +96 -0
  298. data/sub/eac_git/vendor/git-subrepo/test/pull-all.t +38 -0
  299. data/sub/eac_git/vendor/git-subrepo/test/pull-merge.t +113 -0
  300. data/sub/eac_git/vendor/git-subrepo/test/pull-message.t +88 -0
  301. data/sub/eac_git/vendor/git-subrepo/test/pull-new-branch.t +58 -0
  302. data/sub/eac_git/vendor/git-subrepo/test/pull-ours.t +90 -0
  303. data/sub/eac_git/vendor/git-subrepo/test/pull-theirs.t +82 -0
  304. data/sub/eac_git/vendor/git-subrepo/test/pull-twice.t +44 -0
  305. data/sub/eac_git/vendor/git-subrepo/test/pull-worktree.t +40 -0
  306. data/sub/eac_git/vendor/git-subrepo/test/pull.t +99 -0
  307. data/sub/eac_git/vendor/git-subrepo/test/push-after-init.t +51 -0
  308. data/sub/eac_git/vendor/git-subrepo/test/push-force.t +56 -0
  309. data/sub/eac_git/vendor/git-subrepo/test/push-new-branch.t +61 -0
  310. data/sub/eac_git/vendor/git-subrepo/test/push-no-changes.t +29 -0
  311. data/sub/eac_git/vendor/git-subrepo/test/push-squash.t +56 -0
  312. data/sub/eac_git/vendor/git-subrepo/test/push.t +176 -0
  313. data/sub/eac_git/vendor/git-subrepo/test/reclone.t +45 -0
  314. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/HEAD +1 -0
  315. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/config +4 -0
  316. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
  317. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
  318. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
  319. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
  320. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  321. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
  322. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/heads/master +1 -0
  323. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/tags/A +1 -0
  324. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/HEAD +1 -0
  325. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/config +4 -0
  326. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
  327. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
  328. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  329. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/refs/heads/master +1 -0
  330. data/sub/eac_git/vendor/git-subrepo/test/repo/init/HEAD +1 -0
  331. data/sub/eac_git/vendor/git-subrepo/test/repo/init/config +5 -0
  332. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
  333. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
  334. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +2 -0
  335. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
  336. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
  337. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
  338. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
  339. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
  340. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +1 -0
  341. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
  342. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
  343. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +1 -0
  344. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
  345. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
  346. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +3 -0
  347. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +2 -0
  348. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +2 -0
  349. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +1 -0
  350. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
  351. data/sub/eac_git/vendor/git-subrepo/test/repo/init/refs/heads/master +1 -0
  352. data/sub/eac_git/vendor/git-subrepo/test/setup +205 -0
  353. data/sub/eac_git/vendor/git-subrepo/test/status.t +68 -0
  354. data/sub/eac_git/vendor/git-subrepo/test/submodule.t +45 -0
  355. metadata +354 -42
  356. data/sub/avm-eac_php_base0/avm-eac_php_base0.gemspec +0 -21
  357. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/executables.rb +0 -22
  358. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/file_formats/base.rb +0 -20
  359. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/instances/base.rb +0 -13
  360. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/source_generators/base.rb +0 -28
  361. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/sources/base.rb +0 -17
  362. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec.rb +0 -7
  363. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_code.php.source +0 -10
  364. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_code.php.target +0 -10
  365. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_code2.php.source +0 -4
  366. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_code2.php.target +0 -3
  367. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_html_code.php.source +0 -64
  368. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_html_code.php.target +0 -64
  369. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_iso88591_code.php.source +0 -4
  370. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files/php_iso88591_code.php.target +0 -3
  371. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/source_generators/base_spec.rb +0 -8
  372. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/source_generators/base_spec_files/no_options/index.php +0 -0
  373. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/sources/base_spec.rb +0 -7
  374. data/sub/avm-eac_php_base0/template/avm/eac_php_base0/source_generators/base/index.php +0 -0
  375. /data/sub/{avm-eac_php_base0 → avm-git}/Gemfile +0 -0
  376. /data/sub/{avm-eac_php_base0 → avm-git}/spec/rubocop_spec.rb +0 -0
  377. /data/sub/{avm-eac_php_base0 → avm-git}/spec/spec_helper.rb +0 -0
@@ -0,0 +1,2738 @@
1
+ # bash/zsh completion support for core Git.
2
+ #
3
+ # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
4
+ # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
5
+ # Distributed under the GNU General Public License, version 2.0.
6
+ #
7
+ # The contained completion routines provide support for completing:
8
+ #
9
+ # *) local and remote branch names
10
+ # *) local and remote tag names
11
+ # *) .git/remotes file names
12
+ # *) git 'subcommands'
13
+ # *) tree paths within 'ref:path/to/file' expressions
14
+ # *) file paths within current working directory and index
15
+ # *) common --long-options
16
+ #
17
+ # To use these routines:
18
+ #
19
+ # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
20
+ # 2) Add the following line to your .bashrc/.zshrc:
21
+ # source ~/.git-completion.sh
22
+ # 3) Consider changing your PS1 to also show the current branch,
23
+ # see git-prompt.sh for details.
24
+ #
25
+ # If you use complex aliases of form '!f() { ... }; f', you can use the null
26
+ # command ':' as the first command in the function body to declare the desired
27
+ # completion style. For example '!f() { : git commit ; ... }; f' will
28
+ # tell the completion to use commit completion. This also works with aliases
29
+ # of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
30
+
31
+ case "$COMP_WORDBREAKS" in
32
+ *:*) : great ;;
33
+ *) COMP_WORDBREAKS="$COMP_WORDBREAKS:"
34
+ esac
35
+
36
+ # __gitdir accepts 0 or 1 arguments (i.e., location)
37
+ # returns location of .git repo
38
+ __gitdir ()
39
+ {
40
+ if [ -z "${1-}" ]; then
41
+ if [ -n "${__git_dir-}" ]; then
42
+ echo "$__git_dir"
43
+ elif [ -n "${GIT_DIR-}" ]; then
44
+ test -d "${GIT_DIR-}" || return 1
45
+ echo "$GIT_DIR"
46
+ elif [ -d .git ]; then
47
+ echo .git
48
+ else
49
+ git rev-parse --git-dir 2>/dev/null
50
+ fi
51
+ elif [ -d "$1/.git" ]; then
52
+ echo "$1/.git"
53
+ else
54
+ echo "$1"
55
+ fi
56
+ }
57
+
58
+ # The following function is based on code from:
59
+ #
60
+ # bash_completion - programmable completion functions for bash 3.2+
61
+ #
62
+ # Copyright © 2006-2008, Ian Macdonald <ian@caliban.org>
63
+ # © 2009-2010, Bash Completion Maintainers
64
+ # <bash-completion-devel@lists.alioth.debian.org>
65
+ #
66
+ # This program is free software; you can redistribute it and/or modify
67
+ # it under the terms of the GNU General Public License as published by
68
+ # the Free Software Foundation; either version 2, or (at your option)
69
+ # any later version.
70
+ #
71
+ # This program is distributed in the hope that it will be useful,
72
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
73
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
74
+ # GNU General Public License for more details.
75
+ #
76
+ # You should have received a copy of the GNU General Public License
77
+ # along with this program; if not, write to the Free Software Foundation,
78
+ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
79
+ #
80
+ # The latest version of this software can be obtained here:
81
+ #
82
+ # http://bash-completion.alioth.debian.org/
83
+ #
84
+ # RELEASE: 2.x
85
+
86
+ # This function can be used to access a tokenized list of words
87
+ # on the command line:
88
+ #
89
+ # __git_reassemble_comp_words_by_ref '=:'
90
+ # if test "${words_[cword_-1]}" = -w
91
+ # then
92
+ # ...
93
+ # fi
94
+ #
95
+ # The argument should be a collection of characters from the list of
96
+ # word completion separators (COMP_WORDBREAKS) to treat as ordinary
97
+ # characters.
98
+ #
99
+ # This is roughly equivalent to going back in time and setting
100
+ # COMP_WORDBREAKS to exclude those characters. The intent is to
101
+ # make option types like --date=<type> and <rev>:<path> easy to
102
+ # recognize by treating each shell word as a single token.
103
+ #
104
+ # It is best not to set COMP_WORDBREAKS directly because the value is
105
+ # shared with other completion scripts. By the time the completion
106
+ # function gets called, COMP_WORDS has already been populated so local
107
+ # changes to COMP_WORDBREAKS have no effect.
108
+ #
109
+ # Output: words_, cword_, cur_.
110
+
111
+ __git_reassemble_comp_words_by_ref()
112
+ {
113
+ local exclude i j first
114
+ # Which word separators to exclude?
115
+ exclude="${1//[^$COMP_WORDBREAKS]}"
116
+ cword_=$COMP_CWORD
117
+ if [ -z "$exclude" ]; then
118
+ words_=("${COMP_WORDS[@]}")
119
+ return
120
+ fi
121
+ # List of word completion separators has shrunk;
122
+ # re-assemble words to complete.
123
+ for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do
124
+ # Append each nonempty word consisting of just
125
+ # word separator characters to the current word.
126
+ first=t
127
+ while
128
+ [ $i -gt 0 ] &&
129
+ [ -n "${COMP_WORDS[$i]}" ] &&
130
+ # word consists of excluded word separators
131
+ [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ]
132
+ do
133
+ # Attach to the previous token,
134
+ # unless the previous token is the command name.
135
+ if [ $j -ge 2 ] && [ -n "$first" ]; then
136
+ ((j--))
137
+ fi
138
+ first=
139
+ words_[$j]=${words_[j]}${COMP_WORDS[i]}
140
+ if [ $i = $COMP_CWORD ]; then
141
+ cword_=$j
142
+ fi
143
+ if (($i < ${#COMP_WORDS[@]} - 1)); then
144
+ ((i++))
145
+ else
146
+ # Done.
147
+ return
148
+ fi
149
+ done
150
+ words_[$j]=${words_[j]}${COMP_WORDS[i]}
151
+ if [ $i = $COMP_CWORD ]; then
152
+ cword_=$j
153
+ fi
154
+ done
155
+ }
156
+
157
+ if ! type _get_comp_words_by_ref >/dev/null 2>&1; then
158
+ _get_comp_words_by_ref ()
159
+ {
160
+ local exclude cur_ words_ cword_
161
+ if [ "$1" = "-n" ]; then
162
+ exclude=$2
163
+ shift 2
164
+ fi
165
+ __git_reassemble_comp_words_by_ref "$exclude"
166
+ cur_=${words_[cword_]}
167
+ while [ $# -gt 0 ]; do
168
+ case "$1" in
169
+ cur)
170
+ cur=$cur_
171
+ ;;
172
+ prev)
173
+ prev=${words_[$cword_-1]}
174
+ ;;
175
+ words)
176
+ words=("${words_[@]}")
177
+ ;;
178
+ cword)
179
+ cword=$cword_
180
+ ;;
181
+ esac
182
+ shift
183
+ done
184
+ }
185
+ fi
186
+
187
+ __gitcompappend ()
188
+ {
189
+ local i=${#COMPREPLY[@]}
190
+ for x in $1; do
191
+ if [[ "$x" == "$3"* ]]; then
192
+ COMPREPLY[i++]="$2$x$4"
193
+ fi
194
+ done
195
+ }
196
+
197
+ __gitcompadd ()
198
+ {
199
+ COMPREPLY=()
200
+ __gitcompappend "$@"
201
+ }
202
+
203
+ # Generates completion reply, appending a space to possible completion words,
204
+ # if necessary.
205
+ # It accepts 1 to 4 arguments:
206
+ # 1: List of possible completion words.
207
+ # 2: A prefix to be added to each possible completion word (optional).
208
+ # 3: Generate possible completion matches for this word (optional).
209
+ # 4: A suffix to be appended to each possible completion word (optional).
210
+ __gitcomp ()
211
+ {
212
+ local cur_="${3-$cur}"
213
+
214
+ case "$cur_" in
215
+ --*=)
216
+ ;;
217
+ *)
218
+ local c i=0 IFS=$' \t\n'
219
+ for c in $1; do
220
+ c="$c${4-}"
221
+ if [[ $c == "$cur_"* ]]; then
222
+ case $c in
223
+ --*=*|*.) ;;
224
+ *) c="$c " ;;
225
+ esac
226
+ COMPREPLY[i++]="${2-}$c"
227
+ fi
228
+ done
229
+ ;;
230
+ esac
231
+ }
232
+
233
+ # Variation of __gitcomp_nl () that appends to the existing list of
234
+ # completion candidates, COMPREPLY.
235
+ __gitcomp_nl_append ()
236
+ {
237
+ local IFS=$'\n'
238
+ __gitcompappend "$1" "${2-}" "${3-$cur}" "${4- }"
239
+ }
240
+
241
+ # Generates completion reply from newline-separated possible completion words
242
+ # by appending a space to all of them.
243
+ # It accepts 1 to 4 arguments:
244
+ # 1: List of possible completion words, separated by a single newline.
245
+ # 2: A prefix to be added to each possible completion word (optional).
246
+ # 3: Generate possible completion matches for this word (optional).
247
+ # 4: A suffix to be appended to each possible completion word instead of
248
+ # the default space (optional). If specified but empty, nothing is
249
+ # appended.
250
+ __gitcomp_nl ()
251
+ {
252
+ COMPREPLY=()
253
+ __gitcomp_nl_append "$@"
254
+ }
255
+
256
+ # Generates completion reply with compgen from newline-separated possible
257
+ # completion filenames.
258
+ # It accepts 1 to 3 arguments:
259
+ # 1: List of possible completion filenames, separated by a single newline.
260
+ # 2: A directory prefix to be added to each possible completion filename
261
+ # (optional).
262
+ # 3: Generate possible completion matches for this word (optional).
263
+ __gitcomp_file ()
264
+ {
265
+ local IFS=$'\n'
266
+
267
+ # XXX does not work when the directory prefix contains a tilde,
268
+ # since tilde expansion is not applied.
269
+ # This means that COMPREPLY will be empty and Bash default
270
+ # completion will be used.
271
+ __gitcompadd "$1" "${2-}" "${3-$cur}" ""
272
+
273
+ # use a hack to enable file mode in bash < 4
274
+ compopt -o filenames +o nospace 2>/dev/null ||
275
+ compgen -f /non-existing-dir/ > /dev/null
276
+ }
277
+
278
+ # Execute 'git ls-files', unless the --committable option is specified, in
279
+ # which case it runs 'git diff-index' to find out the files that can be
280
+ # committed. It return paths relative to the directory specified in the first
281
+ # argument, and using the options specified in the second argument.
282
+ __git_ls_files_helper ()
283
+ {
284
+ (
285
+ test -n "${CDPATH+set}" && unset CDPATH
286
+ cd "$1"
287
+ if [ "$2" == "--committable" ]; then
288
+ git diff-index --name-only --relative HEAD
289
+ else
290
+ # NOTE: $2 is not quoted in order to support multiple options
291
+ git ls-files --exclude-standard $2
292
+ fi
293
+ ) 2>/dev/null
294
+ }
295
+
296
+
297
+ # __git_index_files accepts 1 or 2 arguments:
298
+ # 1: Options to pass to ls-files (required).
299
+ # 2: A directory path (optional).
300
+ # If provided, only files within the specified directory are listed.
301
+ # Sub directories are never recursed. Path must have a trailing
302
+ # slash.
303
+ __git_index_files ()
304
+ {
305
+ local dir="$(__gitdir)" root="${2-.}" file
306
+
307
+ if [ -d "$dir" ]; then
308
+ __git_ls_files_helper "$root" "$1" |
309
+ while read -r file; do
310
+ case "$file" in
311
+ ?*/*) echo "${file%%/*}" ;;
312
+ *) echo "$file" ;;
313
+ esac
314
+ done | sort | uniq
315
+ fi
316
+ }
317
+
318
+ __git_heads ()
319
+ {
320
+ local dir="$(__gitdir)"
321
+ if [ -d "$dir" ]; then
322
+ git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
323
+ refs/heads
324
+ return
325
+ fi
326
+ }
327
+
328
+ __git_tags ()
329
+ {
330
+ local dir="$(__gitdir)"
331
+ if [ -d "$dir" ]; then
332
+ git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
333
+ refs/tags
334
+ return
335
+ fi
336
+ }
337
+
338
+ # __git_refs accepts 0, 1 (to pass to __gitdir), or 2 arguments
339
+ # presence of 2nd argument means use the guess heuristic employed
340
+ # by checkout for tracking branches
341
+ __git_refs ()
342
+ {
343
+ local i hash dir="$(__gitdir "${1-}")" track="${2-}"
344
+ local format refs
345
+ if [ -d "$dir" ]; then
346
+ case "$cur" in
347
+ refs|refs/*)
348
+ format="refname"
349
+ refs="${cur%/*}"
350
+ track=""
351
+ ;;
352
+ *)
353
+ for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do
354
+ if [ -e "$dir/$i" ]; then echo $i; fi
355
+ done
356
+ format="refname:short"
357
+ refs="refs/tags refs/heads refs/remotes"
358
+ ;;
359
+ esac
360
+ git --git-dir="$dir" for-each-ref --format="%($format)" \
361
+ $refs
362
+ if [ -n "$track" ]; then
363
+ # employ the heuristic used by git checkout
364
+ # Try to find a remote branch that matches the completion word
365
+ # but only output if the branch name is unique
366
+ local ref entry
367
+ git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" \
368
+ "refs/remotes/" | \
369
+ while read -r entry; do
370
+ eval "$entry"
371
+ ref="${ref#*/}"
372
+ if [[ "$ref" == "$cur"* ]]; then
373
+ echo "$ref"
374
+ fi
375
+ done | sort | uniq -u
376
+ fi
377
+ return
378
+ fi
379
+ case "$cur" in
380
+ refs|refs/*)
381
+ git ls-remote "$dir" "$cur*" 2>/dev/null | \
382
+ while read -r hash i; do
383
+ case "$i" in
384
+ *^{}) ;;
385
+ *) echo "$i" ;;
386
+ esac
387
+ done
388
+ ;;
389
+ *)
390
+ echo "HEAD"
391
+ git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
392
+ ;;
393
+ esac
394
+ }
395
+
396
+ # __git_refs2 requires 1 argument (to pass to __git_refs)
397
+ __git_refs2 ()
398
+ {
399
+ local i
400
+ for i in $(__git_refs "$1"); do
401
+ echo "$i:$i"
402
+ done
403
+ }
404
+
405
+ # __git_refs_remotes requires 1 argument (to pass to ls-remote)
406
+ __git_refs_remotes ()
407
+ {
408
+ local i hash
409
+ git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \
410
+ while read -r hash i; do
411
+ echo "$i:refs/remotes/$1/${i#refs/heads/}"
412
+ done
413
+ }
414
+
415
+ __git_remotes ()
416
+ {
417
+ local i IFS=$'\n' d="$(__gitdir)"
418
+ test -d "$d/remotes" && ls -1 "$d/remotes"
419
+ for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
420
+ i="${i#remote.}"
421
+ echo "${i/.url*/}"
422
+ done
423
+ }
424
+
425
+ __git_list_merge_strategies ()
426
+ {
427
+ git merge -s help 2>&1 |
428
+ sed -n -e '/[Aa]vailable strategies are: /,/^$/{
429
+ s/\.$//
430
+ s/.*://
431
+ s/^[ ]*//
432
+ s/[ ]*$//
433
+ p
434
+ }'
435
+ }
436
+
437
+ __git_merge_strategies=
438
+ # 'git merge -s help' (and thus detection of the merge strategy
439
+ # list) fails, unfortunately, if run outside of any git working
440
+ # tree. __git_merge_strategies is set to the empty string in
441
+ # that case, and the detection will be repeated the next time it
442
+ # is needed.
443
+ __git_compute_merge_strategies ()
444
+ {
445
+ test -n "$__git_merge_strategies" ||
446
+ __git_merge_strategies=$(__git_list_merge_strategies)
447
+ }
448
+
449
+ __git_complete_revlist_file ()
450
+ {
451
+ local pfx ls ref cur_="$cur"
452
+ case "$cur_" in
453
+ *..?*:*)
454
+ return
455
+ ;;
456
+ ?*:*)
457
+ ref="${cur_%%:*}"
458
+ cur_="${cur_#*:}"
459
+ case "$cur_" in
460
+ ?*/*)
461
+ pfx="${cur_%/*}"
462
+ cur_="${cur_##*/}"
463
+ ls="$ref:$pfx"
464
+ pfx="$pfx/"
465
+ ;;
466
+ *)
467
+ ls="$ref"
468
+ ;;
469
+ esac
470
+
471
+ case "$COMP_WORDBREAKS" in
472
+ *:*) : great ;;
473
+ *) pfx="$ref:$pfx" ;;
474
+ esac
475
+
476
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \
477
+ | sed '/^100... blob /{
478
+ s,^.* ,,
479
+ s,$, ,
480
+ }
481
+ /^120000 blob /{
482
+ s,^.* ,,
483
+ s,$, ,
484
+ }
485
+ /^040000 tree /{
486
+ s,^.* ,,
487
+ s,$,/,
488
+ }
489
+ s/^.* //')" \
490
+ "$pfx" "$cur_" ""
491
+ ;;
492
+ *...*)
493
+ pfx="${cur_%...*}..."
494
+ cur_="${cur_#*...}"
495
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
496
+ ;;
497
+ *..*)
498
+ pfx="${cur_%..*}.."
499
+ cur_="${cur_#*..}"
500
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
501
+ ;;
502
+ *)
503
+ __gitcomp_nl "$(__git_refs)"
504
+ ;;
505
+ esac
506
+ }
507
+
508
+
509
+ # __git_complete_index_file requires 1 argument:
510
+ # 1: the options to pass to ls-file
511
+ #
512
+ # The exception is --committable, which finds the files appropriate commit.
513
+ __git_complete_index_file ()
514
+ {
515
+ local pfx="" cur_="$cur"
516
+
517
+ case "$cur_" in
518
+ ?*/*)
519
+ pfx="${cur_%/*}"
520
+ cur_="${cur_##*/}"
521
+ pfx="${pfx}/"
522
+ ;;
523
+ esac
524
+
525
+ __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
526
+ }
527
+
528
+ __git_complete_file ()
529
+ {
530
+ __git_complete_revlist_file
531
+ }
532
+
533
+ __git_complete_revlist ()
534
+ {
535
+ __git_complete_revlist_file
536
+ }
537
+
538
+ __git_complete_remote_or_refspec ()
539
+ {
540
+ local cur_="$cur" cmd="${words[1]}"
541
+ local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0
542
+ if [ "$cmd" = "remote" ]; then
543
+ ((c++))
544
+ fi
545
+ while [ $c -lt $cword ]; do
546
+ i="${words[c]}"
547
+ case "$i" in
548
+ --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;;
549
+ --all)
550
+ case "$cmd" in
551
+ push) no_complete_refspec=1 ;;
552
+ fetch)
553
+ return
554
+ ;;
555
+ *) ;;
556
+ esac
557
+ ;;
558
+ -*) ;;
559
+ *) remote="$i"; break ;;
560
+ esac
561
+ ((c++))
562
+ done
563
+ if [ -z "$remote" ]; then
564
+ __gitcomp_nl "$(__git_remotes)"
565
+ return
566
+ fi
567
+ if [ $no_complete_refspec = 1 ]; then
568
+ return
569
+ fi
570
+ [ "$remote" = "." ] && remote=
571
+ case "$cur_" in
572
+ *:*)
573
+ case "$COMP_WORDBREAKS" in
574
+ *:*) : great ;;
575
+ *) pfx="${cur_%%:*}:" ;;
576
+ esac
577
+ cur_="${cur_#*:}"
578
+ lhs=0
579
+ ;;
580
+ +*)
581
+ pfx="+"
582
+ cur_="${cur_#+}"
583
+ ;;
584
+ esac
585
+ case "$cmd" in
586
+ fetch)
587
+ if [ $lhs = 1 ]; then
588
+ __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_"
589
+ else
590
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
591
+ fi
592
+ ;;
593
+ pull|remote)
594
+ if [ $lhs = 1 ]; then
595
+ __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
596
+ else
597
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
598
+ fi
599
+ ;;
600
+ push)
601
+ if [ $lhs = 1 ]; then
602
+ __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
603
+ else
604
+ __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
605
+ fi
606
+ ;;
607
+ esac
608
+ }
609
+
610
+ __git_complete_strategy ()
611
+ {
612
+ __git_compute_merge_strategies
613
+ case "$prev" in
614
+ -s|--strategy)
615
+ __gitcomp "$__git_merge_strategies"
616
+ return 0
617
+ esac
618
+ case "$cur" in
619
+ --strategy=*)
620
+ __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}"
621
+ return 0
622
+ ;;
623
+ esac
624
+ return 1
625
+ }
626
+
627
+ __git_commands () {
628
+ if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}"
629
+ then
630
+ printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}"
631
+ else
632
+ git help -a|egrep '^ [a-zA-Z0-9]'
633
+ fi
634
+ }
635
+
636
+ __git_list_all_commands ()
637
+ {
638
+ local i IFS=" "$'\n'
639
+ for i in $(__git_commands)
640
+ do
641
+ case $i in
642
+ *--*) : helper pattern;;
643
+ *) echo $i;;
644
+ esac
645
+ done
646
+ }
647
+
648
+ __git_all_commands=
649
+ __git_compute_all_commands ()
650
+ {
651
+ test -n "$__git_all_commands" ||
652
+ __git_all_commands=$(__git_list_all_commands)
653
+ }
654
+
655
+ __git_list_porcelain_commands ()
656
+ {
657
+ local i IFS=" "$'\n'
658
+ __git_compute_all_commands
659
+ for i in $__git_all_commands
660
+ do
661
+ case $i in
662
+ *--*) : helper pattern;;
663
+ applymbox) : ask gittus;;
664
+ applypatch) : ask gittus;;
665
+ archimport) : import;;
666
+ cat-file) : plumbing;;
667
+ check-attr) : plumbing;;
668
+ check-ignore) : plumbing;;
669
+ check-mailmap) : plumbing;;
670
+ check-ref-format) : plumbing;;
671
+ checkout-index) : plumbing;;
672
+ commit-tree) : plumbing;;
673
+ count-objects) : infrequent;;
674
+ credential-cache) : credentials helper;;
675
+ credential-store) : credentials helper;;
676
+ cvsexportcommit) : export;;
677
+ cvsimport) : import;;
678
+ cvsserver) : daemon;;
679
+ daemon) : daemon;;
680
+ diff-files) : plumbing;;
681
+ diff-index) : plumbing;;
682
+ diff-tree) : plumbing;;
683
+ fast-import) : import;;
684
+ fast-export) : export;;
685
+ fsck-objects) : plumbing;;
686
+ fetch-pack) : plumbing;;
687
+ fmt-merge-msg) : plumbing;;
688
+ for-each-ref) : plumbing;;
689
+ hash-object) : plumbing;;
690
+ http-*) : transport;;
691
+ index-pack) : plumbing;;
692
+ init-db) : deprecated;;
693
+ local-fetch) : plumbing;;
694
+ ls-files) : plumbing;;
695
+ ls-remote) : plumbing;;
696
+ ls-tree) : plumbing;;
697
+ mailinfo) : plumbing;;
698
+ mailsplit) : plumbing;;
699
+ merge-*) : plumbing;;
700
+ mktree) : plumbing;;
701
+ mktag) : plumbing;;
702
+ pack-objects) : plumbing;;
703
+ pack-redundant) : plumbing;;
704
+ pack-refs) : plumbing;;
705
+ parse-remote) : plumbing;;
706
+ patch-id) : plumbing;;
707
+ prune) : plumbing;;
708
+ prune-packed) : plumbing;;
709
+ quiltimport) : import;;
710
+ read-tree) : plumbing;;
711
+ receive-pack) : plumbing;;
712
+ remote-*) : transport;;
713
+ rerere) : plumbing;;
714
+ rev-list) : plumbing;;
715
+ rev-parse) : plumbing;;
716
+ runstatus) : plumbing;;
717
+ sh-setup) : internal;;
718
+ shell) : daemon;;
719
+ show-ref) : plumbing;;
720
+ send-pack) : plumbing;;
721
+ show-index) : plumbing;;
722
+ ssh-*) : transport;;
723
+ stripspace) : plumbing;;
724
+ symbolic-ref) : plumbing;;
725
+ unpack-file) : plumbing;;
726
+ unpack-objects) : plumbing;;
727
+ update-index) : plumbing;;
728
+ update-ref) : plumbing;;
729
+ update-server-info) : daemon;;
730
+ upload-archive) : plumbing;;
731
+ upload-pack) : plumbing;;
732
+ write-tree) : plumbing;;
733
+ var) : infrequent;;
734
+ verify-pack) : infrequent;;
735
+ verify-tag) : plumbing;;
736
+ *) echo $i;;
737
+ esac
738
+ done
739
+ }
740
+
741
+ __git_porcelain_commands=
742
+ __git_compute_porcelain_commands ()
743
+ {
744
+ __git_compute_all_commands
745
+ test -n "$__git_porcelain_commands" ||
746
+ __git_porcelain_commands=$(__git_list_porcelain_commands)
747
+ }
748
+
749
+ __git_pretty_aliases ()
750
+ {
751
+ local i IFS=$'\n'
752
+ for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do
753
+ case "$i" in
754
+ pretty.*)
755
+ i="${i#pretty.}"
756
+ echo "${i/ */}"
757
+ ;;
758
+ esac
759
+ done
760
+ }
761
+
762
+ __git_aliases ()
763
+ {
764
+ local i IFS=$'\n'
765
+ for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
766
+ case "$i" in
767
+ alias.*)
768
+ i="${i#alias.}"
769
+ echo "${i/ */}"
770
+ ;;
771
+ esac
772
+ done
773
+ }
774
+
775
+ # __git_aliased_command requires 1 argument
776
+ __git_aliased_command ()
777
+ {
778
+ local word cmdline=$(git --git-dir="$(__gitdir)" \
779
+ config --get "alias.$1")
780
+ for word in $cmdline; do
781
+ case "$word" in
782
+ \!gitk|gitk)
783
+ echo "gitk"
784
+ return
785
+ ;;
786
+ \!*) : shell command alias ;;
787
+ -*) : option ;;
788
+ *=*) : setting env ;;
789
+ git) : git itself ;;
790
+ \(\)) : skip parens of shell function definition ;;
791
+ {) : skip start of shell helper function ;;
792
+ :) : skip null command ;;
793
+ \'*) : skip opening quote after sh -c ;;
794
+ *)
795
+ echo "$word"
796
+ return
797
+ esac
798
+ done
799
+ }
800
+
801
+ # __git_find_on_cmdline requires 1 argument
802
+ __git_find_on_cmdline ()
803
+ {
804
+ local word subcommand c=1
805
+ while [ $c -lt $cword ]; do
806
+ word="${words[c]}"
807
+ for subcommand in $1; do
808
+ if [ "$subcommand" = "$word" ]; then
809
+ echo "$subcommand"
810
+ return
811
+ fi
812
+ done
813
+ ((c++))
814
+ done
815
+ }
816
+
817
+ __git_has_doubledash ()
818
+ {
819
+ local c=1
820
+ while [ $c -lt $cword ]; do
821
+ if [ "--" = "${words[c]}" ]; then
822
+ return 0
823
+ fi
824
+ ((c++))
825
+ done
826
+ return 1
827
+ }
828
+
829
+ # Try to count non option arguments passed on the command line for the
830
+ # specified git command.
831
+ # When options are used, it is necessary to use the special -- option to
832
+ # tell the implementation were non option arguments begin.
833
+ # XXX this can not be improved, since options can appear everywhere, as
834
+ # an example:
835
+ # git mv x -n y
836
+ #
837
+ # __git_count_arguments requires 1 argument: the git command executed.
838
+ __git_count_arguments ()
839
+ {
840
+ local word i c=0
841
+
842
+ # Skip "git" (first argument)
843
+ for ((i=1; i < ${#words[@]}; i++)); do
844
+ word="${words[i]}"
845
+
846
+ case "$word" in
847
+ --)
848
+ # Good; we can assume that the following are only non
849
+ # option arguments.
850
+ ((c = 0))
851
+ ;;
852
+ "$1")
853
+ # Skip the specified git command and discard git
854
+ # main options
855
+ ((c = 0))
856
+ ;;
857
+ ?*)
858
+ ((c++))
859
+ ;;
860
+ esac
861
+ done
862
+
863
+ printf "%d" $c
864
+ }
865
+
866
+ __git_whitespacelist="nowarn warn error error-all fix"
867
+
868
+ _git_am ()
869
+ {
870
+ local dir="$(__gitdir)"
871
+ if [ -d "$dir"/rebase-apply ]; then
872
+ __gitcomp "--skip --continue --resolved --abort"
873
+ return
874
+ fi
875
+ case "$cur" in
876
+ --whitespace=*)
877
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
878
+ return
879
+ ;;
880
+ --*)
881
+ __gitcomp "
882
+ --3way --committer-date-is-author-date --ignore-date
883
+ --ignore-whitespace --ignore-space-change
884
+ --interactive --keep --no-utf8 --signoff --utf8
885
+ --whitespace= --scissors
886
+ "
887
+ return
888
+ esac
889
+ }
890
+
891
+ _git_apply ()
892
+ {
893
+ case "$cur" in
894
+ --whitespace=*)
895
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
896
+ return
897
+ ;;
898
+ --*)
899
+ __gitcomp "
900
+ --stat --numstat --summary --check --index
901
+ --cached --index-info --reverse --reject --unidiff-zero
902
+ --apply --no-add --exclude=
903
+ --ignore-whitespace --ignore-space-change
904
+ --whitespace= --inaccurate-eof --verbose
905
+ "
906
+ return
907
+ esac
908
+ }
909
+
910
+ _git_add ()
911
+ {
912
+ case "$cur" in
913
+ --*)
914
+ __gitcomp "
915
+ --interactive --refresh --patch --update --dry-run
916
+ --ignore-errors --intent-to-add
917
+ "
918
+ return
919
+ esac
920
+
921
+ # XXX should we check for --update and --all options ?
922
+ __git_complete_index_file "--others --modified --directory --no-empty-directory"
923
+ }
924
+
925
+ _git_archive ()
926
+ {
927
+ case "$cur" in
928
+ --format=*)
929
+ __gitcomp "$(git archive --list)" "" "${cur##--format=}"
930
+ return
931
+ ;;
932
+ --remote=*)
933
+ __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}"
934
+ return
935
+ ;;
936
+ --*)
937
+ __gitcomp "
938
+ --format= --list --verbose
939
+ --prefix= --remote= --exec=
940
+ "
941
+ return
942
+ ;;
943
+ esac
944
+ __git_complete_file
945
+ }
946
+
947
+ _git_bisect ()
948
+ {
949
+ __git_has_doubledash && return
950
+
951
+ local subcommands="start bad good skip reset visualize replay log run"
952
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
953
+ if [ -z "$subcommand" ]; then
954
+ if [ -f "$(__gitdir)"/BISECT_START ]; then
955
+ __gitcomp "$subcommands"
956
+ else
957
+ __gitcomp "replay start"
958
+ fi
959
+ return
960
+ fi
961
+
962
+ case "$subcommand" in
963
+ bad|good|reset|skip|start)
964
+ __gitcomp_nl "$(__git_refs)"
965
+ ;;
966
+ *)
967
+ ;;
968
+ esac
969
+ }
970
+
971
+ _git_branch ()
972
+ {
973
+ local i c=1 only_local_ref="n" has_r="n"
974
+
975
+ while [ $c -lt $cword ]; do
976
+ i="${words[c]}"
977
+ case "$i" in
978
+ -d|-m) only_local_ref="y" ;;
979
+ -r) has_r="y" ;;
980
+ esac
981
+ ((c++))
982
+ done
983
+
984
+ case "$cur" in
985
+ --set-upstream-to=*)
986
+ __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}"
987
+ ;;
988
+ --*)
989
+ __gitcomp "
990
+ --color --no-color --verbose --abbrev= --no-abbrev
991
+ --track --no-track --contains --merged --no-merged
992
+ --set-upstream-to= --edit-description --list
993
+ --unset-upstream
994
+ "
995
+ ;;
996
+ *)
997
+ if [ $only_local_ref = "y" -a $has_r = "n" ]; then
998
+ __gitcomp_nl "$(__git_heads)"
999
+ else
1000
+ __gitcomp_nl "$(__git_refs)"
1001
+ fi
1002
+ ;;
1003
+ esac
1004
+ }
1005
+
1006
+ _git_bundle ()
1007
+ {
1008
+ local cmd="${words[2]}"
1009
+ case "$cword" in
1010
+ 2)
1011
+ __gitcomp "create list-heads verify unbundle"
1012
+ ;;
1013
+ 3)
1014
+ # looking for a file
1015
+ ;;
1016
+ *)
1017
+ case "$cmd" in
1018
+ create)
1019
+ __git_complete_revlist
1020
+ ;;
1021
+ esac
1022
+ ;;
1023
+ esac
1024
+ }
1025
+
1026
+ _git_checkout ()
1027
+ {
1028
+ __git_has_doubledash && return
1029
+
1030
+ case "$cur" in
1031
+ --conflict=*)
1032
+ __gitcomp "diff3 merge" "" "${cur##--conflict=}"
1033
+ ;;
1034
+ --*)
1035
+ __gitcomp "
1036
+ --quiet --ours --theirs --track --no-track --merge
1037
+ --conflict= --orphan --patch
1038
+ "
1039
+ ;;
1040
+ *)
1041
+ # check if --track, --no-track, or --no-guess was specified
1042
+ # if so, disable DWIM mode
1043
+ local flags="--track --no-track --no-guess" track=1
1044
+ if [ -n "$(__git_find_on_cmdline "$flags")" ]; then
1045
+ track=''
1046
+ fi
1047
+ __gitcomp_nl "$(__git_refs '' $track)"
1048
+ ;;
1049
+ esac
1050
+ }
1051
+
1052
+ _git_cherry ()
1053
+ {
1054
+ __gitcomp "$(__git_refs)"
1055
+ }
1056
+
1057
+ _git_cherry_pick ()
1058
+ {
1059
+ local dir="$(__gitdir)"
1060
+ if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
1061
+ __gitcomp "--continue --quit --abort"
1062
+ return
1063
+ fi
1064
+ case "$cur" in
1065
+ --*)
1066
+ __gitcomp "--edit --no-commit --signoff --strategy= --mainline"
1067
+ ;;
1068
+ *)
1069
+ __gitcomp_nl "$(__git_refs)"
1070
+ ;;
1071
+ esac
1072
+ }
1073
+
1074
+ _git_clean ()
1075
+ {
1076
+ case "$cur" in
1077
+ --*)
1078
+ __gitcomp "--dry-run --quiet"
1079
+ return
1080
+ ;;
1081
+ esac
1082
+
1083
+ # XXX should we check for -x option ?
1084
+ __git_complete_index_file "--others --directory"
1085
+ }
1086
+
1087
+ _git_clone ()
1088
+ {
1089
+ case "$cur" in
1090
+ --*)
1091
+ __gitcomp "
1092
+ --local
1093
+ --no-hardlinks
1094
+ --shared
1095
+ --reference
1096
+ --quiet
1097
+ --no-checkout
1098
+ --bare
1099
+ --mirror
1100
+ --origin
1101
+ --upload-pack
1102
+ --template=
1103
+ --depth
1104
+ --single-branch
1105
+ --branch
1106
+ "
1107
+ return
1108
+ ;;
1109
+ esac
1110
+ }
1111
+
1112
+ _git_commit ()
1113
+ {
1114
+ case "$prev" in
1115
+ -c|-C)
1116
+ __gitcomp_nl "$(__git_refs)" "" "${cur}"
1117
+ return
1118
+ ;;
1119
+ esac
1120
+
1121
+ case "$cur" in
1122
+ --cleanup=*)
1123
+ __gitcomp "default strip verbatim whitespace
1124
+ " "" "${cur##--cleanup=}"
1125
+ return
1126
+ ;;
1127
+ --reuse-message=*|--reedit-message=*|\
1128
+ --fixup=*|--squash=*)
1129
+ __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1130
+ return
1131
+ ;;
1132
+ --untracked-files=*)
1133
+ __gitcomp "all no normal" "" "${cur##--untracked-files=}"
1134
+ return
1135
+ ;;
1136
+ --*)
1137
+ __gitcomp "
1138
+ --all --author= --signoff --verify --no-verify
1139
+ --edit --no-edit
1140
+ --amend --include --only --interactive
1141
+ --dry-run --reuse-message= --reedit-message=
1142
+ --reset-author --file= --message= --template=
1143
+ --cleanup= --untracked-files --untracked-files=
1144
+ --verbose --quiet --fixup= --squash=
1145
+ "
1146
+ return
1147
+ esac
1148
+
1149
+ if git rev-parse --verify --quiet HEAD >/dev/null; then
1150
+ __git_complete_index_file "--committable"
1151
+ else
1152
+ # This is the first commit
1153
+ __git_complete_index_file "--cached"
1154
+ fi
1155
+ }
1156
+
1157
+ _git_describe ()
1158
+ {
1159
+ case "$cur" in
1160
+ --*)
1161
+ __gitcomp "
1162
+ --all --tags --contains --abbrev= --candidates=
1163
+ --exact-match --debug --long --match --always
1164
+ "
1165
+ return
1166
+ esac
1167
+ __gitcomp_nl "$(__git_refs)"
1168
+ }
1169
+
1170
+ __git_diff_algorithms="myers minimal patience histogram"
1171
+
1172
+ __git_diff_common_options="--stat --numstat --shortstat --summary
1173
+ --patch-with-stat --name-only --name-status --color
1174
+ --no-color --color-words --no-renames --check
1175
+ --full-index --binary --abbrev --diff-filter=
1176
+ --find-copies-harder
1177
+ --text --ignore-space-at-eol --ignore-space-change
1178
+ --ignore-all-space --exit-code --quiet --ext-diff
1179
+ --no-ext-diff
1180
+ --no-prefix --src-prefix= --dst-prefix=
1181
+ --inter-hunk-context=
1182
+ --patience --histogram --minimal
1183
+ --raw --word-diff
1184
+ --dirstat --dirstat= --dirstat-by-file
1185
+ --dirstat-by-file= --cumulative
1186
+ --diff-algorithm=
1187
+ "
1188
+
1189
+ _git_diff ()
1190
+ {
1191
+ __git_has_doubledash && return
1192
+
1193
+ case "$cur" in
1194
+ --diff-algorithm=*)
1195
+ __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
1196
+ return
1197
+ ;;
1198
+ --*)
1199
+ __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1200
+ --base --ours --theirs --no-index
1201
+ $__git_diff_common_options
1202
+ "
1203
+ return
1204
+ ;;
1205
+ esac
1206
+ __git_complete_revlist_file
1207
+ }
1208
+
1209
+ __git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
1210
+ tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare
1211
+ "
1212
+
1213
+ _git_difftool ()
1214
+ {
1215
+ __git_has_doubledash && return
1216
+
1217
+ case "$cur" in
1218
+ --tool=*)
1219
+ __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}"
1220
+ return
1221
+ ;;
1222
+ --*)
1223
+ __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1224
+ --base --ours --theirs
1225
+ --no-renames --diff-filter= --find-copies-harder
1226
+ --relative --ignore-submodules
1227
+ --tool="
1228
+ return
1229
+ ;;
1230
+ esac
1231
+ __git_complete_revlist_file
1232
+ }
1233
+
1234
+ __git_fetch_recurse_submodules="yes on-demand no"
1235
+
1236
+ __git_fetch_options="
1237
+ --quiet --verbose --append --upload-pack --force --keep --depth=
1238
+ --tags --no-tags --all --prune --dry-run --recurse-submodules=
1239
+ "
1240
+
1241
+ _git_fetch ()
1242
+ {
1243
+ case "$cur" in
1244
+ --recurse-submodules=*)
1245
+ __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
1246
+ return
1247
+ ;;
1248
+ --*)
1249
+ __gitcomp "$__git_fetch_options"
1250
+ return
1251
+ ;;
1252
+ esac
1253
+ __git_complete_remote_or_refspec
1254
+ }
1255
+
1256
+ __git_format_patch_options="
1257
+ --stdout --attach --no-attach --thread --thread= --no-thread
1258
+ --numbered --start-number --numbered-files --keep-subject --signoff
1259
+ --signature --no-signature --in-reply-to= --cc= --full-index --binary
1260
+ --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
1261
+ --inline --suffix= --ignore-if-in-upstream --subject-prefix=
1262
+ --output-directory --reroll-count --to= --quiet --notes
1263
+ "
1264
+
1265
+ _git_format_patch ()
1266
+ {
1267
+ case "$cur" in
1268
+ --thread=*)
1269
+ __gitcomp "
1270
+ deep shallow
1271
+ " "" "${cur##--thread=}"
1272
+ return
1273
+ ;;
1274
+ --*)
1275
+ __gitcomp "$__git_format_patch_options"
1276
+ return
1277
+ ;;
1278
+ esac
1279
+ __git_complete_revlist
1280
+ }
1281
+
1282
+ _git_fsck ()
1283
+ {
1284
+ case "$cur" in
1285
+ --*)
1286
+ __gitcomp "
1287
+ --tags --root --unreachable --cache --no-reflogs --full
1288
+ --strict --verbose --lost-found
1289
+ "
1290
+ return
1291
+ ;;
1292
+ esac
1293
+ }
1294
+
1295
+ _git_gc ()
1296
+ {
1297
+ case "$cur" in
1298
+ --*)
1299
+ __gitcomp "--prune --aggressive"
1300
+ return
1301
+ ;;
1302
+ esac
1303
+ }
1304
+
1305
+ _git_gitk ()
1306
+ {
1307
+ _gitk
1308
+ }
1309
+
1310
+ __git_match_ctag() {
1311
+ awk "/^${1////\\/}/ { print \$1 }" "$2"
1312
+ }
1313
+
1314
+ _git_grep ()
1315
+ {
1316
+ __git_has_doubledash && return
1317
+
1318
+ case "$cur" in
1319
+ --*)
1320
+ __gitcomp "
1321
+ --cached
1322
+ --text --ignore-case --word-regexp --invert-match
1323
+ --full-name --line-number
1324
+ --extended-regexp --basic-regexp --fixed-strings
1325
+ --perl-regexp
1326
+ --files-with-matches --name-only
1327
+ --files-without-match
1328
+ --max-depth
1329
+ --count
1330
+ --and --or --not --all-match
1331
+ "
1332
+ return
1333
+ ;;
1334
+ esac
1335
+
1336
+ case "$cword,$prev" in
1337
+ 2,*|*,-*)
1338
+ if test -r tags; then
1339
+ __gitcomp_nl "$(__git_match_ctag "$cur" tags)"
1340
+ return
1341
+ fi
1342
+ ;;
1343
+ esac
1344
+
1345
+ __gitcomp_nl "$(__git_refs)"
1346
+ }
1347
+
1348
+ _git_help ()
1349
+ {
1350
+ case "$cur" in
1351
+ --*)
1352
+ __gitcomp "--all --info --man --web"
1353
+ return
1354
+ ;;
1355
+ esac
1356
+ __git_compute_all_commands
1357
+ __gitcomp "$__git_all_commands $(__git_aliases)
1358
+ attributes cli core-tutorial cvs-migration
1359
+ diffcore gitk glossary hooks ignore modules
1360
+ namespaces repository-layout tutorial tutorial-2
1361
+ workflows
1362
+ "
1363
+ }
1364
+
1365
+ _git_init ()
1366
+ {
1367
+ case "$cur" in
1368
+ --shared=*)
1369
+ __gitcomp "
1370
+ false true umask group all world everybody
1371
+ " "" "${cur##--shared=}"
1372
+ return
1373
+ ;;
1374
+ --*)
1375
+ __gitcomp "--quiet --bare --template= --shared --shared="
1376
+ return
1377
+ ;;
1378
+ esac
1379
+ }
1380
+
1381
+ _git_ls_files ()
1382
+ {
1383
+ case "$cur" in
1384
+ --*)
1385
+ __gitcomp "--cached --deleted --modified --others --ignored
1386
+ --stage --directory --no-empty-directory --unmerged
1387
+ --killed --exclude= --exclude-from=
1388
+ --exclude-per-directory= --exclude-standard
1389
+ --error-unmatch --with-tree= --full-name
1390
+ --abbrev --ignored --exclude-per-directory
1391
+ "
1392
+ return
1393
+ ;;
1394
+ esac
1395
+
1396
+ # XXX ignore options like --modified and always suggest all cached
1397
+ # files.
1398
+ __git_complete_index_file "--cached"
1399
+ }
1400
+
1401
+ _git_ls_remote ()
1402
+ {
1403
+ __gitcomp_nl "$(__git_remotes)"
1404
+ }
1405
+
1406
+ _git_ls_tree ()
1407
+ {
1408
+ __git_complete_file
1409
+ }
1410
+
1411
+ # Options that go well for log, shortlog and gitk
1412
+ __git_log_common_options="
1413
+ --not --all
1414
+ --branches --tags --remotes
1415
+ --first-parent --merges --no-merges
1416
+ --max-count=
1417
+ --max-age= --since= --after=
1418
+ --min-age= --until= --before=
1419
+ --min-parents= --max-parents=
1420
+ --no-min-parents --no-max-parents
1421
+ "
1422
+ # Options that go well for log and gitk (not shortlog)
1423
+ __git_log_gitk_options="
1424
+ --dense --sparse --full-history
1425
+ --simplify-merges --simplify-by-decoration
1426
+ --left-right --notes --no-notes
1427
+ "
1428
+ # Options that go well for log and shortlog (not gitk)
1429
+ __git_log_shortlog_options="
1430
+ --author= --committer= --grep=
1431
+ --all-match
1432
+ "
1433
+
1434
+ __git_log_pretty_formats="oneline short medium full fuller email raw format:"
1435
+ __git_log_date_formats="relative iso8601 rfc2822 short local default raw"
1436
+
1437
+ _git_log ()
1438
+ {
1439
+ __git_has_doubledash && return
1440
+
1441
+ local g="$(git rev-parse --git-dir 2>/dev/null)"
1442
+ local merge=""
1443
+ if [ -f "$g/MERGE_HEAD" ]; then
1444
+ merge="--merge"
1445
+ fi
1446
+ case "$cur" in
1447
+ --pretty=*|--format=*)
1448
+ __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
1449
+ " "" "${cur#*=}"
1450
+ return
1451
+ ;;
1452
+ --date=*)
1453
+ __gitcomp "$__git_log_date_formats" "" "${cur##--date=}"
1454
+ return
1455
+ ;;
1456
+ --decorate=*)
1457
+ __gitcomp "long short" "" "${cur##--decorate=}"
1458
+ return
1459
+ ;;
1460
+ --*)
1461
+ __gitcomp "
1462
+ $__git_log_common_options
1463
+ $__git_log_shortlog_options
1464
+ $__git_log_gitk_options
1465
+ --root --topo-order --date-order --reverse
1466
+ --follow --full-diff
1467
+ --abbrev-commit --abbrev=
1468
+ --relative-date --date=
1469
+ --pretty= --format= --oneline
1470
+ --cherry-pick
1471
+ --graph
1472
+ --decorate --decorate=
1473
+ --walk-reflogs
1474
+ --parents --children
1475
+ $merge
1476
+ $__git_diff_common_options
1477
+ --pickaxe-all --pickaxe-regex
1478
+ "
1479
+ return
1480
+ ;;
1481
+ esac
1482
+ __git_complete_revlist
1483
+ }
1484
+
1485
+ # Common merge options shared by git-merge(1) and git-pull(1).
1486
+ __git_merge_options="
1487
+ --no-commit --no-stat --log --no-log --squash --strategy
1488
+ --commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
1489
+ --verify-signatures --no-verify-signatures --gpg-sign
1490
+ --quiet --verbose --progress --no-progress
1491
+ "
1492
+
1493
+ _git_merge ()
1494
+ {
1495
+ __git_complete_strategy && return
1496
+
1497
+ case "$cur" in
1498
+ --*)
1499
+ __gitcomp "$__git_merge_options
1500
+ --rerere-autoupdate --no-rerere-autoupdate --abort"
1501
+ return
1502
+ esac
1503
+ __gitcomp_nl "$(__git_refs)"
1504
+ }
1505
+
1506
+ _git_mergetool ()
1507
+ {
1508
+ case "$cur" in
1509
+ --tool=*)
1510
+ __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}"
1511
+ return
1512
+ ;;
1513
+ --*)
1514
+ __gitcomp "--tool="
1515
+ return
1516
+ ;;
1517
+ esac
1518
+ }
1519
+
1520
+ _git_merge_base ()
1521
+ {
1522
+ case "$cur" in
1523
+ --*)
1524
+ __gitcomp "--octopus --independent --is-ancestor --fork-point"
1525
+ return
1526
+ ;;
1527
+ esac
1528
+ __gitcomp_nl "$(__git_refs)"
1529
+ }
1530
+
1531
+ _git_mv ()
1532
+ {
1533
+ case "$cur" in
1534
+ --*)
1535
+ __gitcomp "--dry-run"
1536
+ return
1537
+ ;;
1538
+ esac
1539
+
1540
+ if [ $(__git_count_arguments "mv") -gt 0 ]; then
1541
+ # We need to show both cached and untracked files (including
1542
+ # empty directories) since this may not be the last argument.
1543
+ __git_complete_index_file "--cached --others --directory"
1544
+ else
1545
+ __git_complete_index_file "--cached"
1546
+ fi
1547
+ }
1548
+
1549
+ _git_name_rev ()
1550
+ {
1551
+ __gitcomp "--tags --all --stdin"
1552
+ }
1553
+
1554
+ _git_notes ()
1555
+ {
1556
+ local subcommands='add append copy edit list prune remove show'
1557
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
1558
+
1559
+ case "$subcommand,$cur" in
1560
+ ,--*)
1561
+ __gitcomp '--ref'
1562
+ ;;
1563
+ ,*)
1564
+ case "$prev" in
1565
+ --ref)
1566
+ __gitcomp_nl "$(__git_refs)"
1567
+ ;;
1568
+ *)
1569
+ __gitcomp "$subcommands --ref"
1570
+ ;;
1571
+ esac
1572
+ ;;
1573
+ add,--reuse-message=*|append,--reuse-message=*|\
1574
+ add,--reedit-message=*|append,--reedit-message=*)
1575
+ __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1576
+ ;;
1577
+ add,--*|append,--*)
1578
+ __gitcomp '--file= --message= --reedit-message=
1579
+ --reuse-message='
1580
+ ;;
1581
+ copy,--*)
1582
+ __gitcomp '--stdin'
1583
+ ;;
1584
+ prune,--*)
1585
+ __gitcomp '--dry-run --verbose'
1586
+ ;;
1587
+ prune,*)
1588
+ ;;
1589
+ *)
1590
+ case "$prev" in
1591
+ -m|-F)
1592
+ ;;
1593
+ *)
1594
+ __gitcomp_nl "$(__git_refs)"
1595
+ ;;
1596
+ esac
1597
+ ;;
1598
+ esac
1599
+ }
1600
+
1601
+ _git_pull ()
1602
+ {
1603
+ __git_complete_strategy && return
1604
+
1605
+ case "$cur" in
1606
+ --recurse-submodules=*)
1607
+ __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
1608
+ return
1609
+ ;;
1610
+ --*)
1611
+ __gitcomp "
1612
+ --rebase --no-rebase
1613
+ $__git_merge_options
1614
+ $__git_fetch_options
1615
+ "
1616
+ return
1617
+ ;;
1618
+ esac
1619
+ __git_complete_remote_or_refspec
1620
+ }
1621
+
1622
+ __git_push_recurse_submodules="check on-demand"
1623
+
1624
+ __git_complete_force_with_lease ()
1625
+ {
1626
+ local cur_=$1
1627
+
1628
+ case "$cur_" in
1629
+ --*=)
1630
+ ;;
1631
+ *:*)
1632
+ __gitcomp_nl "$(__git_refs)" "" "${cur_#*:}"
1633
+ ;;
1634
+ *)
1635
+ __gitcomp_nl "$(__git_refs)" "" "$cur_"
1636
+ ;;
1637
+ esac
1638
+ }
1639
+
1640
+ _git_push ()
1641
+ {
1642
+ case "$prev" in
1643
+ --repo)
1644
+ __gitcomp_nl "$(__git_remotes)"
1645
+ return
1646
+ ;;
1647
+ --recurse-submodules)
1648
+ __gitcomp "$__git_push_recurse_submodules"
1649
+ return
1650
+ ;;
1651
+ esac
1652
+ case "$cur" in
1653
+ --repo=*)
1654
+ __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
1655
+ return
1656
+ ;;
1657
+ --recurse-submodules=*)
1658
+ __gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}"
1659
+ return
1660
+ ;;
1661
+ --force-with-lease=*)
1662
+ __git_complete_force_with_lease "${cur##--force-with-lease=}"
1663
+ return
1664
+ ;;
1665
+ --*)
1666
+ __gitcomp "
1667
+ --all --mirror --tags --dry-run --force --verbose
1668
+ --quiet --prune --delete --follow-tags
1669
+ --receive-pack= --repo= --set-upstream
1670
+ --force-with-lease --force-with-lease= --recurse-submodules=
1671
+ "
1672
+ return
1673
+ ;;
1674
+ esac
1675
+ __git_complete_remote_or_refspec
1676
+ }
1677
+
1678
+ _git_rebase ()
1679
+ {
1680
+ local dir="$(__gitdir)"
1681
+ if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
1682
+ __gitcomp "--continue --skip --abort"
1683
+ return
1684
+ fi
1685
+ __git_complete_strategy && return
1686
+ case "$cur" in
1687
+ --whitespace=*)
1688
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
1689
+ return
1690
+ ;;
1691
+ --*)
1692
+ __gitcomp "
1693
+ --onto --merge --strategy --interactive
1694
+ --preserve-merges --stat --no-stat
1695
+ --committer-date-is-author-date --ignore-date
1696
+ --ignore-whitespace --whitespace=
1697
+ --autosquash --fork-point --no-fork-point
1698
+ "
1699
+
1700
+ return
1701
+ esac
1702
+ __gitcomp_nl "$(__git_refs)"
1703
+ }
1704
+
1705
+ _git_reflog ()
1706
+ {
1707
+ local subcommands="show delete expire"
1708
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
1709
+
1710
+ if [ -z "$subcommand" ]; then
1711
+ __gitcomp "$subcommands"
1712
+ else
1713
+ __gitcomp_nl "$(__git_refs)"
1714
+ fi
1715
+ }
1716
+
1717
+ __git_send_email_confirm_options="always never auto cc compose"
1718
+ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
1719
+
1720
+ _git_send_email ()
1721
+ {
1722
+ case "$cur" in
1723
+ --confirm=*)
1724
+ __gitcomp "
1725
+ $__git_send_email_confirm_options
1726
+ " "" "${cur##--confirm=}"
1727
+ return
1728
+ ;;
1729
+ --suppress-cc=*)
1730
+ __gitcomp "
1731
+ $__git_send_email_suppresscc_options
1732
+ " "" "${cur##--suppress-cc=}"
1733
+
1734
+ return
1735
+ ;;
1736
+ --smtp-encryption=*)
1737
+ __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}"
1738
+ return
1739
+ ;;
1740
+ --thread=*)
1741
+ __gitcomp "
1742
+ deep shallow
1743
+ " "" "${cur##--thread=}"
1744
+ return
1745
+ ;;
1746
+ --*)
1747
+ __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
1748
+ --compose --confirm= --dry-run --envelope-sender
1749
+ --from --identity
1750
+ --in-reply-to --no-chain-reply-to --no-signed-off-by-cc
1751
+ --no-suppress-from --no-thread --quiet
1752
+ --signed-off-by-cc --smtp-pass --smtp-server
1753
+ --smtp-server-port --smtp-encryption= --smtp-user
1754
+ --subject --suppress-cc= --suppress-from --thread --to
1755
+ --validate --no-validate
1756
+ $__git_format_patch_options"
1757
+ return
1758
+ ;;
1759
+ esac
1760
+ __git_complete_revlist
1761
+ }
1762
+
1763
+ _git_stage ()
1764
+ {
1765
+ _git_add
1766
+ }
1767
+
1768
+ __git_config_get_set_variables ()
1769
+ {
1770
+ local prevword word config_file= c=$cword
1771
+ while [ $c -gt 1 ]; do
1772
+ word="${words[c]}"
1773
+ case "$word" in
1774
+ --system|--global|--local|--file=*)
1775
+ config_file="$word"
1776
+ break
1777
+ ;;
1778
+ -f|--file)
1779
+ config_file="$word $prevword"
1780
+ break
1781
+ ;;
1782
+ esac
1783
+ prevword=$word
1784
+ c=$((--c))
1785
+ done
1786
+
1787
+ git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null |
1788
+ while read -r line
1789
+ do
1790
+ case "$line" in
1791
+ *.*=*)
1792
+ echo "${line/=*/}"
1793
+ ;;
1794
+ esac
1795
+ done
1796
+ }
1797
+
1798
+ _git_config ()
1799
+ {
1800
+ case "$prev" in
1801
+ branch.*.remote|branch.*.pushremote)
1802
+ __gitcomp_nl "$(__git_remotes)"
1803
+ return
1804
+ ;;
1805
+ branch.*.merge)
1806
+ __gitcomp_nl "$(__git_refs)"
1807
+ return
1808
+ ;;
1809
+ branch.*.rebase)
1810
+ __gitcomp "false true"
1811
+ return
1812
+ ;;
1813
+ remote.pushdefault)
1814
+ __gitcomp_nl "$(__git_remotes)"
1815
+ return
1816
+ ;;
1817
+ remote.*.fetch)
1818
+ local remote="${prev#remote.}"
1819
+ remote="${remote%.fetch}"
1820
+ if [ -z "$cur" ]; then
1821
+ __gitcomp_nl "refs/heads/" "" "" ""
1822
+ return
1823
+ fi
1824
+ __gitcomp_nl "$(__git_refs_remotes "$remote")"
1825
+ return
1826
+ ;;
1827
+ remote.*.push)
1828
+ local remote="${prev#remote.}"
1829
+ remote="${remote%.push}"
1830
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" \
1831
+ for-each-ref --format='%(refname):%(refname)' \
1832
+ refs/heads)"
1833
+ return
1834
+ ;;
1835
+ pull.twohead|pull.octopus)
1836
+ __git_compute_merge_strategies
1837
+ __gitcomp "$__git_merge_strategies"
1838
+ return
1839
+ ;;
1840
+ color.branch|color.diff|color.interactive|\
1841
+ color.showbranch|color.status|color.ui)
1842
+ __gitcomp "always never auto"
1843
+ return
1844
+ ;;
1845
+ color.pager)
1846
+ __gitcomp "false true"
1847
+ return
1848
+ ;;
1849
+ color.*.*)
1850
+ __gitcomp "
1851
+ normal black red green yellow blue magenta cyan white
1852
+ bold dim ul blink reverse
1853
+ "
1854
+ return
1855
+ ;;
1856
+ diff.submodule)
1857
+ __gitcomp "log short"
1858
+ return
1859
+ ;;
1860
+ help.format)
1861
+ __gitcomp "man info web html"
1862
+ return
1863
+ ;;
1864
+ log.date)
1865
+ __gitcomp "$__git_log_date_formats"
1866
+ return
1867
+ ;;
1868
+ sendemail.aliasesfiletype)
1869
+ __gitcomp "mutt mailrc pine elm gnus"
1870
+ return
1871
+ ;;
1872
+ sendemail.confirm)
1873
+ __gitcomp "$__git_send_email_confirm_options"
1874
+ return
1875
+ ;;
1876
+ sendemail.suppresscc)
1877
+ __gitcomp "$__git_send_email_suppresscc_options"
1878
+ return
1879
+ ;;
1880
+ --get|--get-all|--unset|--unset-all)
1881
+ __gitcomp_nl "$(__git_config_get_set_variables)"
1882
+ return
1883
+ ;;
1884
+ *.*)
1885
+ return
1886
+ ;;
1887
+ esac
1888
+ case "$cur" in
1889
+ --*)
1890
+ __gitcomp "
1891
+ --system --global --local --file=
1892
+ --list --replace-all
1893
+ --get --get-all --get-regexp
1894
+ --add --unset --unset-all
1895
+ --remove-section --rename-section
1896
+ "
1897
+ return
1898
+ ;;
1899
+ branch.*.*)
1900
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1901
+ __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
1902
+ return
1903
+ ;;
1904
+ branch.*)
1905
+ local pfx="${cur%.*}." cur_="${cur#*.}"
1906
+ __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "."
1907
+ __gitcomp_nl_append $'autosetupmerge\nautosetuprebase\n' "$pfx" "$cur_"
1908
+ return
1909
+ ;;
1910
+ guitool.*.*)
1911
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1912
+ __gitcomp "
1913
+ argprompt cmd confirm needsfile noconsole norescan
1914
+ prompt revprompt revunmerged title
1915
+ " "$pfx" "$cur_"
1916
+ return
1917
+ ;;
1918
+ difftool.*.*)
1919
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1920
+ __gitcomp "cmd path" "$pfx" "$cur_"
1921
+ return
1922
+ ;;
1923
+ man.*.*)
1924
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1925
+ __gitcomp "cmd path" "$pfx" "$cur_"
1926
+ return
1927
+ ;;
1928
+ mergetool.*.*)
1929
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1930
+ __gitcomp "cmd path trustExitCode" "$pfx" "$cur_"
1931
+ return
1932
+ ;;
1933
+ pager.*)
1934
+ local pfx="${cur%.*}." cur_="${cur#*.}"
1935
+ __git_compute_all_commands
1936
+ __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_"
1937
+ return
1938
+ ;;
1939
+ remote.*.*)
1940
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1941
+ __gitcomp "
1942
+ url proxy fetch push mirror skipDefaultUpdate
1943
+ receivepack uploadpack tagopt pushurl
1944
+ " "$pfx" "$cur_"
1945
+ return
1946
+ ;;
1947
+ remote.*)
1948
+ local pfx="${cur%.*}." cur_="${cur#*.}"
1949
+ __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
1950
+ __gitcomp_nl_append "pushdefault" "$pfx" "$cur_"
1951
+ return
1952
+ ;;
1953
+ url.*.*)
1954
+ local pfx="${cur%.*}." cur_="${cur##*.}"
1955
+ __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"
1956
+ return
1957
+ ;;
1958
+ esac
1959
+ __gitcomp "
1960
+ add.ignoreErrors
1961
+ advice.commitBeforeMerge
1962
+ advice.detachedHead
1963
+ advice.implicitIdentity
1964
+ advice.pushNonFastForward
1965
+ advice.resolveConflict
1966
+ advice.statusHints
1967
+ alias.
1968
+ am.keepcr
1969
+ apply.ignorewhitespace
1970
+ apply.whitespace
1971
+ branch.autosetupmerge
1972
+ branch.autosetuprebase
1973
+ browser.
1974
+ clean.requireForce
1975
+ color.branch
1976
+ color.branch.current
1977
+ color.branch.local
1978
+ color.branch.plain
1979
+ color.branch.remote
1980
+ color.decorate.HEAD
1981
+ color.decorate.branch
1982
+ color.decorate.remoteBranch
1983
+ color.decorate.stash
1984
+ color.decorate.tag
1985
+ color.diff
1986
+ color.diff.commit
1987
+ color.diff.frag
1988
+ color.diff.func
1989
+ color.diff.meta
1990
+ color.diff.new
1991
+ color.diff.old
1992
+ color.diff.plain
1993
+ color.diff.whitespace
1994
+ color.grep
1995
+ color.grep.context
1996
+ color.grep.filename
1997
+ color.grep.function
1998
+ color.grep.linenumber
1999
+ color.grep.match
2000
+ color.grep.selected
2001
+ color.grep.separator
2002
+ color.interactive
2003
+ color.interactive.error
2004
+ color.interactive.header
2005
+ color.interactive.help
2006
+ color.interactive.prompt
2007
+ color.pager
2008
+ color.showbranch
2009
+ color.status
2010
+ color.status.added
2011
+ color.status.changed
2012
+ color.status.header
2013
+ color.status.nobranch
2014
+ color.status.untracked
2015
+ color.status.updated
2016
+ color.ui
2017
+ commit.status
2018
+ commit.template
2019
+ core.abbrev
2020
+ core.askpass
2021
+ core.attributesfile
2022
+ core.autocrlf
2023
+ core.bare
2024
+ core.bigFileThreshold
2025
+ core.compression
2026
+ core.createObject
2027
+ core.deltaBaseCacheLimit
2028
+ core.editor
2029
+ core.eol
2030
+ core.excludesfile
2031
+ core.fileMode
2032
+ core.fsyncobjectfiles
2033
+ core.gitProxy
2034
+ core.ignoreStat
2035
+ core.ignorecase
2036
+ core.logAllRefUpdates
2037
+ core.loosecompression
2038
+ core.notesRef
2039
+ core.packedGitLimit
2040
+ core.packedGitWindowSize
2041
+ core.pager
2042
+ core.preferSymlinkRefs
2043
+ core.preloadindex
2044
+ core.quotepath
2045
+ core.repositoryFormatVersion
2046
+ core.safecrlf
2047
+ core.sharedRepository
2048
+ core.sparseCheckout
2049
+ core.symlinks
2050
+ core.trustctime
2051
+ core.warnAmbiguousRefs
2052
+ core.whitespace
2053
+ core.worktree
2054
+ diff.autorefreshindex
2055
+ diff.external
2056
+ diff.ignoreSubmodules
2057
+ diff.mnemonicprefix
2058
+ diff.noprefix
2059
+ diff.renameLimit
2060
+ diff.renames
2061
+ diff.statGraphWidth
2062
+ diff.submodule
2063
+ diff.suppressBlankEmpty
2064
+ diff.tool
2065
+ diff.wordRegex
2066
+ diff.algorithm
2067
+ difftool.
2068
+ difftool.prompt
2069
+ fetch.recurseSubmodules
2070
+ fetch.unpackLimit
2071
+ format.attach
2072
+ format.cc
2073
+ format.coverLetter
2074
+ format.headers
2075
+ format.numbered
2076
+ format.pretty
2077
+ format.signature
2078
+ format.signoff
2079
+ format.subjectprefix
2080
+ format.suffix
2081
+ format.thread
2082
+ format.to
2083
+ gc.
2084
+ gc.aggressiveWindow
2085
+ gc.auto
2086
+ gc.autopacklimit
2087
+ gc.packrefs
2088
+ gc.pruneexpire
2089
+ gc.reflogexpire
2090
+ gc.reflogexpireunreachable
2091
+ gc.rerereresolved
2092
+ gc.rerereunresolved
2093
+ gitcvs.allbinary
2094
+ gitcvs.commitmsgannotation
2095
+ gitcvs.dbTableNamePrefix
2096
+ gitcvs.dbdriver
2097
+ gitcvs.dbname
2098
+ gitcvs.dbpass
2099
+ gitcvs.dbuser
2100
+ gitcvs.enabled
2101
+ gitcvs.logfile
2102
+ gitcvs.usecrlfattr
2103
+ guitool.
2104
+ gui.blamehistoryctx
2105
+ gui.commitmsgwidth
2106
+ gui.copyblamethreshold
2107
+ gui.diffcontext
2108
+ gui.encoding
2109
+ gui.fastcopyblame
2110
+ gui.matchtrackingbranch
2111
+ gui.newbranchtemplate
2112
+ gui.pruneduringfetch
2113
+ gui.spellingdictionary
2114
+ gui.trustmtime
2115
+ help.autocorrect
2116
+ help.browser
2117
+ help.format
2118
+ http.lowSpeedLimit
2119
+ http.lowSpeedTime
2120
+ http.maxRequests
2121
+ http.minSessions
2122
+ http.noEPSV
2123
+ http.postBuffer
2124
+ http.proxy
2125
+ http.sslCAInfo
2126
+ http.sslCAPath
2127
+ http.sslCert
2128
+ http.sslCertPasswordProtected
2129
+ http.sslKey
2130
+ http.sslVerify
2131
+ http.useragent
2132
+ i18n.commitEncoding
2133
+ i18n.logOutputEncoding
2134
+ imap.authMethod
2135
+ imap.folder
2136
+ imap.host
2137
+ imap.pass
2138
+ imap.port
2139
+ imap.preformattedHTML
2140
+ imap.sslverify
2141
+ imap.tunnel
2142
+ imap.user
2143
+ init.templatedir
2144
+ instaweb.browser
2145
+ instaweb.httpd
2146
+ instaweb.local
2147
+ instaweb.modulepath
2148
+ instaweb.port
2149
+ interactive.singlekey
2150
+ log.date
2151
+ log.decorate
2152
+ log.showroot
2153
+ mailmap.file
2154
+ man.
2155
+ man.viewer
2156
+ merge.
2157
+ merge.conflictstyle
2158
+ merge.log
2159
+ merge.renameLimit
2160
+ merge.renormalize
2161
+ merge.stat
2162
+ merge.tool
2163
+ merge.verbosity
2164
+ mergetool.
2165
+ mergetool.keepBackup
2166
+ mergetool.keepTemporaries
2167
+ mergetool.prompt
2168
+ notes.displayRef
2169
+ notes.rewrite.
2170
+ notes.rewrite.amend
2171
+ notes.rewrite.rebase
2172
+ notes.rewriteMode
2173
+ notes.rewriteRef
2174
+ pack.compression
2175
+ pack.deltaCacheLimit
2176
+ pack.deltaCacheSize
2177
+ pack.depth
2178
+ pack.indexVersion
2179
+ pack.packSizeLimit
2180
+ pack.threads
2181
+ pack.window
2182
+ pack.windowMemory
2183
+ pager.
2184
+ pretty.
2185
+ pull.octopus
2186
+ pull.twohead
2187
+ push.default
2188
+ rebase.autosquash
2189
+ rebase.stat
2190
+ receive.autogc
2191
+ receive.denyCurrentBranch
2192
+ receive.denyDeleteCurrent
2193
+ receive.denyDeletes
2194
+ receive.denyNonFastForwards
2195
+ receive.fsckObjects
2196
+ receive.unpackLimit
2197
+ receive.updateserverinfo
2198
+ remote.pushdefault
2199
+ remotes.
2200
+ repack.usedeltabaseoffset
2201
+ rerere.autoupdate
2202
+ rerere.enabled
2203
+ sendemail.
2204
+ sendemail.aliasesfile
2205
+ sendemail.aliasfiletype
2206
+ sendemail.bcc
2207
+ sendemail.cc
2208
+ sendemail.cccmd
2209
+ sendemail.chainreplyto
2210
+ sendemail.confirm
2211
+ sendemail.envelopesender
2212
+ sendemail.from
2213
+ sendemail.identity
2214
+ sendemail.multiedit
2215
+ sendemail.signedoffbycc
2216
+ sendemail.smtpdomain
2217
+ sendemail.smtpencryption
2218
+ sendemail.smtppass
2219
+ sendemail.smtpserver
2220
+ sendemail.smtpserveroption
2221
+ sendemail.smtpserverport
2222
+ sendemail.smtpuser
2223
+ sendemail.suppresscc
2224
+ sendemail.suppressfrom
2225
+ sendemail.thread
2226
+ sendemail.to
2227
+ sendemail.validate
2228
+ showbranch.default
2229
+ status.relativePaths
2230
+ status.showUntrackedFiles
2231
+ status.submodulesummary
2232
+ submodule.
2233
+ tar.umask
2234
+ transfer.unpackLimit
2235
+ url.
2236
+ user.email
2237
+ user.name
2238
+ user.signingkey
2239
+ web.browser
2240
+ branch. remote.
2241
+ "
2242
+ }
2243
+
2244
+ _git_remote ()
2245
+ {
2246
+ local subcommands="add rename remove set-head set-branches set-url show prune update"
2247
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
2248
+ if [ -z "$subcommand" ]; then
2249
+ __gitcomp "$subcommands"
2250
+ return
2251
+ fi
2252
+
2253
+ case "$subcommand" in
2254
+ rename|remove|set-url|show|prune)
2255
+ __gitcomp_nl "$(__git_remotes)"
2256
+ ;;
2257
+ set-head|set-branches)
2258
+ __git_complete_remote_or_refspec
2259
+ ;;
2260
+ update)
2261
+ local i c='' IFS=$'\n'
2262
+ for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
2263
+ i="${i#remotes.}"
2264
+ c="$c ${i/ */}"
2265
+ done
2266
+ __gitcomp "$c"
2267
+ ;;
2268
+ *)
2269
+ ;;
2270
+ esac
2271
+ }
2272
+
2273
+ _git_replace ()
2274
+ {
2275
+ __gitcomp_nl "$(__git_refs)"
2276
+ }
2277
+
2278
+ _git_reset ()
2279
+ {
2280
+ __git_has_doubledash && return
2281
+
2282
+ case "$cur" in
2283
+ --*)
2284
+ __gitcomp "--merge --mixed --hard --soft --patch"
2285
+ return
2286
+ ;;
2287
+ esac
2288
+ __gitcomp_nl "$(__git_refs)"
2289
+ }
2290
+
2291
+ _git_revert ()
2292
+ {
2293
+ case "$cur" in
2294
+ --*)
2295
+ __gitcomp "--edit --mainline --no-edit --no-commit --signoff"
2296
+ return
2297
+ ;;
2298
+ esac
2299
+ __gitcomp_nl "$(__git_refs)"
2300
+ }
2301
+
2302
+ _git_rm ()
2303
+ {
2304
+ case "$cur" in
2305
+ --*)
2306
+ __gitcomp "--cached --dry-run --ignore-unmatch --quiet"
2307
+ return
2308
+ ;;
2309
+ esac
2310
+
2311
+ __git_complete_index_file "--cached"
2312
+ }
2313
+
2314
+ _git_shortlog ()
2315
+ {
2316
+ __git_has_doubledash && return
2317
+
2318
+ case "$cur" in
2319
+ --*)
2320
+ __gitcomp "
2321
+ $__git_log_common_options
2322
+ $__git_log_shortlog_options
2323
+ --numbered --summary
2324
+ "
2325
+ return
2326
+ ;;
2327
+ esac
2328
+ __git_complete_revlist
2329
+ }
2330
+
2331
+ _git_show ()
2332
+ {
2333
+ __git_has_doubledash && return
2334
+
2335
+ case "$cur" in
2336
+ --pretty=*|--format=*)
2337
+ __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
2338
+ " "" "${cur#*=}"
2339
+ return
2340
+ ;;
2341
+ --diff-algorithm=*)
2342
+ __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
2343
+ return
2344
+ ;;
2345
+ --*)
2346
+ __gitcomp "--pretty= --format= --abbrev-commit --oneline
2347
+ $__git_diff_common_options
2348
+ "
2349
+ return
2350
+ ;;
2351
+ esac
2352
+ __git_complete_revlist_file
2353
+ }
2354
+
2355
+ _git_show_branch ()
2356
+ {
2357
+ case "$cur" in
2358
+ --*)
2359
+ __gitcomp "
2360
+ --all --remotes --topo-order --current --more=
2361
+ --list --independent --merge-base --no-name
2362
+ --color --no-color
2363
+ --sha1-name --sparse --topics --reflog
2364
+ "
2365
+ return
2366
+ ;;
2367
+ esac
2368
+ __git_complete_revlist
2369
+ }
2370
+
2371
+ _git_stash ()
2372
+ {
2373
+ local save_opts='--keep-index --no-keep-index --quiet --patch'
2374
+ local subcommands='save list show apply clear drop pop create branch'
2375
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
2376
+ if [ -z "$subcommand" ]; then
2377
+ case "$cur" in
2378
+ --*)
2379
+ __gitcomp "$save_opts"
2380
+ ;;
2381
+ *)
2382
+ if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
2383
+ __gitcomp "$subcommands"
2384
+ fi
2385
+ ;;
2386
+ esac
2387
+ else
2388
+ case "$subcommand,$cur" in
2389
+ save,--*)
2390
+ __gitcomp "$save_opts"
2391
+ ;;
2392
+ apply,--*|pop,--*)
2393
+ __gitcomp "--index --quiet"
2394
+ ;;
2395
+ show,--*|drop,--*|branch,--*)
2396
+ ;;
2397
+ show,*|apply,*|drop,*|pop,*|branch,*)
2398
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
2399
+ | sed -n -e 's/:.*//p')"
2400
+ ;;
2401
+ *)
2402
+ ;;
2403
+ esac
2404
+ fi
2405
+ }
2406
+
2407
+ _git_submodule ()
2408
+ {
2409
+ __git_has_doubledash && return
2410
+
2411
+ local subcommands="add status init deinit update summary foreach sync"
2412
+ if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
2413
+ case "$cur" in
2414
+ --*)
2415
+ __gitcomp "--quiet --cached"
2416
+ ;;
2417
+ *)
2418
+ __gitcomp "$subcommands"
2419
+ ;;
2420
+ esac
2421
+ return
2422
+ fi
2423
+ }
2424
+
2425
+ _git_svn ()
2426
+ {
2427
+ local subcommands="
2428
+ init fetch clone rebase dcommit log find-rev
2429
+ set-tree commit-diff info create-ignore propget
2430
+ proplist show-ignore show-externals branch tag blame
2431
+ migrate mkdirs reset gc
2432
+ "
2433
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
2434
+ if [ -z "$subcommand" ]; then
2435
+ __gitcomp "$subcommands"
2436
+ else
2437
+ local remote_opts="--username= --config-dir= --no-auth-cache"
2438
+ local fc_opts="
2439
+ --follow-parent --authors-file= --repack=
2440
+ --no-metadata --use-svm-props --use-svnsync-props
2441
+ --log-window-size= --no-checkout --quiet
2442
+ --repack-flags --use-log-author --localtime
2443
+ --ignore-paths= --include-paths= $remote_opts
2444
+ "
2445
+ local init_opts="
2446
+ --template= --shared= --trunk= --tags=
2447
+ --branches= --stdlayout --minimize-url
2448
+ --no-metadata --use-svm-props --use-svnsync-props
2449
+ --rewrite-root= --prefix= --use-log-author
2450
+ --add-author-from $remote_opts
2451
+ "
2452
+ local cmt_opts="
2453
+ --edit --rmdir --find-copies-harder --copy-similarity=
2454
+ "
2455
+
2456
+ case "$subcommand,$cur" in
2457
+ fetch,--*)
2458
+ __gitcomp "--revision= --fetch-all $fc_opts"
2459
+ ;;
2460
+ clone,--*)
2461
+ __gitcomp "--revision= $fc_opts $init_opts"
2462
+ ;;
2463
+ init,--*)
2464
+ __gitcomp "$init_opts"
2465
+ ;;
2466
+ dcommit,--*)
2467
+ __gitcomp "
2468
+ --merge --strategy= --verbose --dry-run
2469
+ --fetch-all --no-rebase --commit-url
2470
+ --revision --interactive $cmt_opts $fc_opts
2471
+ "
2472
+ ;;
2473
+ set-tree,--*)
2474
+ __gitcomp "--stdin $cmt_opts $fc_opts"
2475
+ ;;
2476
+ create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\
2477
+ show-externals,--*|mkdirs,--*)
2478
+ __gitcomp "--revision="
2479
+ ;;
2480
+ log,--*)
2481
+ __gitcomp "
2482
+ --limit= --revision= --verbose --incremental
2483
+ --oneline --show-commit --non-recursive
2484
+ --authors-file= --color
2485
+ "
2486
+ ;;
2487
+ rebase,--*)
2488
+ __gitcomp "
2489
+ --merge --verbose --strategy= --local
2490
+ --fetch-all --dry-run $fc_opts
2491
+ "
2492
+ ;;
2493
+ commit-diff,--*)
2494
+ __gitcomp "--message= --file= --revision= $cmt_opts"
2495
+ ;;
2496
+ info,--*)
2497
+ __gitcomp "--url"
2498
+ ;;
2499
+ branch,--*)
2500
+ __gitcomp "--dry-run --message --tag"
2501
+ ;;
2502
+ tag,--*)
2503
+ __gitcomp "--dry-run --message"
2504
+ ;;
2505
+ blame,--*)
2506
+ __gitcomp "--git-format"
2507
+ ;;
2508
+ migrate,--*)
2509
+ __gitcomp "
2510
+ --config-dir= --ignore-paths= --minimize
2511
+ --no-auth-cache --username=
2512
+ "
2513
+ ;;
2514
+ reset,--*)
2515
+ __gitcomp "--revision= --parent"
2516
+ ;;
2517
+ *)
2518
+ ;;
2519
+ esac
2520
+ fi
2521
+ }
2522
+
2523
+ _git_tag ()
2524
+ {
2525
+ local i c=1 f=0
2526
+ while [ $c -lt $cword ]; do
2527
+ i="${words[c]}"
2528
+ case "$i" in
2529
+ -d|-v)
2530
+ __gitcomp_nl "$(__git_tags)"
2531
+ return
2532
+ ;;
2533
+ -f)
2534
+ f=1
2535
+ ;;
2536
+ esac
2537
+ ((c++))
2538
+ done
2539
+
2540
+ case "$prev" in
2541
+ -m|-F)
2542
+ ;;
2543
+ -*|tag)
2544
+ if [ $f = 1 ]; then
2545
+ __gitcomp_nl "$(__git_tags)"
2546
+ fi
2547
+ ;;
2548
+ *)
2549
+ __gitcomp_nl "$(__git_refs)"
2550
+ ;;
2551
+ esac
2552
+ }
2553
+
2554
+ _git_whatchanged ()
2555
+ {
2556
+ _git_log
2557
+ }
2558
+
2559
+ __git_main ()
2560
+ {
2561
+ local i c=1 command __git_dir
2562
+
2563
+ while [ $c -lt $cword ]; do
2564
+ i="${words[c]}"
2565
+ case "$i" in
2566
+ --git-dir=*) __git_dir="${i#--git-dir=}" ;;
2567
+ --git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
2568
+ --bare) __git_dir="." ;;
2569
+ --help) command="help"; break ;;
2570
+ -c|--work-tree|--namespace) ((c++)) ;;
2571
+ -*) ;;
2572
+ *) command="$i"; break ;;
2573
+ esac
2574
+ ((c++))
2575
+ done
2576
+
2577
+ if [ -z "$command" ]; then
2578
+ case "$cur" in
2579
+ --*) __gitcomp "
2580
+ --paginate
2581
+ --no-pager
2582
+ --git-dir=
2583
+ --bare
2584
+ --version
2585
+ --exec-path
2586
+ --exec-path=
2587
+ --html-path
2588
+ --man-path
2589
+ --info-path
2590
+ --work-tree=
2591
+ --namespace=
2592
+ --no-replace-objects
2593
+ --help
2594
+ "
2595
+ ;;
2596
+ *) __git_compute_porcelain_commands
2597
+ __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;;
2598
+ esac
2599
+ return
2600
+ fi
2601
+
2602
+ local completion_func="_git_${command//-/_}"
2603
+ declare -f $completion_func >/dev/null && $completion_func && return
2604
+
2605
+ local expansion=$(__git_aliased_command "$command")
2606
+ if [ -n "$expansion" ]; then
2607
+ words[1]=$expansion
2608
+ completion_func="_git_${expansion//-/_}"
2609
+ declare -f $completion_func >/dev/null && $completion_func
2610
+ fi
2611
+ }
2612
+
2613
+ __gitk_main ()
2614
+ {
2615
+ __git_has_doubledash && return
2616
+
2617
+ local g="$(__gitdir)"
2618
+ local merge=""
2619
+ if [ -f "$g/MERGE_HEAD" ]; then
2620
+ merge="--merge"
2621
+ fi
2622
+ case "$cur" in
2623
+ --*)
2624
+ __gitcomp "
2625
+ $__git_log_common_options
2626
+ $__git_log_gitk_options
2627
+ $merge
2628
+ "
2629
+ return
2630
+ ;;
2631
+ esac
2632
+ __git_complete_revlist
2633
+ }
2634
+
2635
+ if [[ -n ${ZSH_VERSION-} ]]; then
2636
+ echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2
2637
+
2638
+ autoload -U +X compinit && compinit
2639
+
2640
+ __gitcomp ()
2641
+ {
2642
+ emulate -L zsh
2643
+
2644
+ local cur_="${3-$cur}"
2645
+
2646
+ case "$cur_" in
2647
+ --*=)
2648
+ ;;
2649
+ *)
2650
+ local c IFS=$' \t\n'
2651
+ local -a array
2652
+ for c in ${=1}; do
2653
+ c="$c${4-}"
2654
+ case $c in
2655
+ --*=*|*.) ;;
2656
+ *) c="$c " ;;
2657
+ esac
2658
+ array[${#array[@]}+1]="$c"
2659
+ done
2660
+ compset -P '*[=:]'
2661
+ compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
2662
+ ;;
2663
+ esac
2664
+ }
2665
+
2666
+ __gitcomp_nl ()
2667
+ {
2668
+ emulate -L zsh
2669
+
2670
+ local IFS=$'\n'
2671
+ compset -P '*[=:]'
2672
+ compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
2673
+ }
2674
+
2675
+ __gitcomp_file ()
2676
+ {
2677
+ emulate -L zsh
2678
+
2679
+ local IFS=$'\n'
2680
+ compset -P '*[=:]'
2681
+ compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
2682
+ }
2683
+
2684
+ _git ()
2685
+ {
2686
+ local _ret=1 cur cword prev
2687
+ cur=${words[CURRENT]}
2688
+ prev=${words[CURRENT-1]}
2689
+ let cword=CURRENT-1
2690
+ emulate ksh -c __${service}_main
2691
+ let _ret && _default && _ret=0
2692
+ return _ret
2693
+ }
2694
+
2695
+ compdef _git git gitk
2696
+ return
2697
+ fi
2698
+
2699
+ __git_func_wrap ()
2700
+ {
2701
+ local cur words cword prev
2702
+ _get_comp_words_by_ref -n =: cur words cword prev
2703
+ $1
2704
+ }
2705
+
2706
+ # Setup completion for certain functions defined above by setting common
2707
+ # variables and workarounds.
2708
+ # This is NOT a public function; use at your own risk.
2709
+ __git_complete ()
2710
+ {
2711
+ local wrapper="__git_wrap${2}"
2712
+ eval "$wrapper () { __git_func_wrap $2 ; }"
2713
+ complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
2714
+ || complete -o default -o nospace -F $wrapper $1
2715
+ }
2716
+
2717
+ # wrapper for backwards compatibility
2718
+ _git ()
2719
+ {
2720
+ __git_wrap__git_main
2721
+ }
2722
+
2723
+ # wrapper for backwards compatibility
2724
+ _gitk ()
2725
+ {
2726
+ __git_wrap__gitk_main
2727
+ }
2728
+
2729
+ __git_complete git __git_main
2730
+ __git_complete gitk __gitk_main
2731
+
2732
+ # The following are necessary only for Cygwin, and only are needed
2733
+ # when the user has tab-completed the executable name and consequently
2734
+ # included the '.exe' suffix.
2735
+ #
2736
+ if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
2737
+ __git_complete git.exe __git_main
2738
+ fi