eac_tools 0.100.0 → 0.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +29 -19
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +2 -2
  5. data/sub/avm/lib/avm/applications/base/local_instance.rb +0 -2
  6. data/sub/avm/lib/avm/applications/base/local_source.rb +0 -1
  7. data/sub/avm/lib/avm/applications/base/organization.rb +0 -2
  8. data/sub/avm/lib/avm/applications/base/publishing.rb +0 -2
  9. data/sub/avm/lib/avm/applications/base/scm.rb +0 -2
  10. data/sub/avm/lib/avm/applications/base/stereotype.rb +0 -2
  11. data/sub/avm/lib/avm/applications/base.rb +0 -2
  12. data/sub/avm/lib/avm/data/clearer.rb +0 -2
  13. data/sub/avm/lib/avm/data/dumper.rb +0 -3
  14. data/sub/avm/lib/avm/data/loader.rb +0 -3
  15. data/sub/avm/lib/avm/data/package/clear.rb +0 -2
  16. data/sub/avm/lib/avm/data/package/dump.rb +0 -3
  17. data/sub/avm/lib/avm/data/package/load.rb +0 -3
  18. data/sub/avm/lib/avm/data/package.rb +0 -2
  19. data/sub/avm/lib/avm/data/performer.rb +0 -2
  20. data/sub/avm/lib/avm/data/unit.rb +0 -2
  21. data/sub/avm/lib/avm/data/unit_with_commands.rb +0 -3
  22. data/sub/avm/lib/avm/docker/image.rb +0 -3
  23. data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +0 -2
  24. data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +0 -1
  25. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +0 -1
  26. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +0 -1
  27. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +0 -1
  28. data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +0 -1
  29. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +0 -3
  30. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +0 -2
  31. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +0 -3
  32. data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +0 -2
  33. data/sub/avm/lib/avm/entries/base.rb +0 -2
  34. data/sub/avm/lib/avm/entries/entry.rb +0 -1
  35. data/sub/avm/lib/avm/entries/jobs/base.rb +0 -2
  36. data/sub/avm/lib/avm/entries/jobs/with_variables_source.rb +0 -2
  37. data/sub/avm/lib/avm/file_formats/file_result.rb +0 -1
  38. data/sub/avm/lib/avm/file_formats/search_formatter.rb +0 -2
  39. data/sub/avm/lib/avm/file_formats/unknown.rb +0 -2
  40. data/sub/avm/lib/avm/files/appendable/file_content.rb +0 -1
  41. data/sub/avm/lib/avm/files/appendable/plain_directory.rb +0 -1
  42. data/sub/avm/lib/avm/files/appendable/tar_output_command.rb +0 -1
  43. data/sub/avm/lib/avm/files/appendable/templatized_directory.rb +1 -1
  44. data/sub/avm/lib/avm/files/appender.rb +0 -2
  45. data/sub/avm/lib/avm/files/deploy.rb +1 -1
  46. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +0 -2
  47. data/sub/avm/lib/avm/instances/base/auto_values/database.rb +0 -2
  48. data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +0 -4
  49. data/sub/avm/lib/avm/instances/base/auto_values/source.rb +0 -2
  50. data/sub/avm/lib/avm/instances/base/dockerizable.rb +0 -2
  51. data/sub/avm/lib/avm/instances/base/entry_keys.rb +0 -2
  52. data/sub/avm/lib/avm/instances/base/install.rb +0 -3
  53. data/sub/avm/lib/avm/instances/base/production.rb +0 -1
  54. data/sub/avm/lib/avm/instances/base/web.rb +0 -1
  55. data/sub/avm/lib/avm/instances/base.rb +1 -8
  56. data/sub/avm/lib/avm/instances/data/files_unit.rb +0 -2
  57. data/sub/avm/lib/avm/instances/data/package.rb +0 -2
  58. data/sub/avm/lib/avm/instances/data/unit.rb +0 -3
  59. data/sub/avm/lib/avm/instances/docker_image.rb +0 -2
  60. data/sub/avm/lib/avm/instances/entry_keys.rb +0 -3
  61. data/sub/avm/lib/avm/instances/runner.rb +0 -1
  62. data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +0 -1
  63. data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +0 -1
  64. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +0 -2
  65. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +0 -2
  66. data/sub/avm/lib/avm/launcher/context/instance_manager.rb +0 -1
  67. data/sub/avm/lib/avm/launcher/context/settings.rb +0 -2
  68. data/sub/avm/lib/avm/launcher/context.rb +1 -5
  69. data/sub/avm/lib/avm/launcher/errors/non_project.rb +0 -2
  70. data/sub/avm/lib/avm/launcher/instances/base.rb +0 -3
  71. data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +0 -3
  72. data/sub/avm/lib/avm/launcher/paths/logical.rb +0 -3
  73. data/sub/avm/lib/avm/launcher/publish/base.rb +0 -2
  74. data/sub/avm/lib/avm/registry/application_scms.rb +0 -2
  75. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +0 -3
  76. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +0 -2
  77. data/sub/avm/lib/avm/registry/application_stereotypes.rb +0 -3
  78. data/sub/avm/lib/avm/registry/applications.rb +0 -2
  79. data/sub/avm/lib/avm/registry/file_formats.rb +0 -3
  80. data/sub/avm/lib/avm/registry/instances.rb +0 -3
  81. data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +0 -2
  82. data/sub/avm/lib/avm/registry/runners.rb +0 -2
  83. data/sub/avm/lib/avm/registry/scms.rb +0 -2
  84. data/sub/avm/lib/avm/registry/source_generators.rb +0 -3
  85. data/sub/avm/lib/avm/registry/sources.rb +0 -2
  86. data/sub/avm/lib/avm/registry/with_path/cache.rb +0 -2
  87. data/sub/avm/lib/avm/registry/with_path.rb +0 -2
  88. data/sub/avm/lib/avm/rspec/launcher_controller.rb +0 -1
  89. data/sub/avm/lib/avm/rspec/setup/launcher.rb +0 -2
  90. data/sub/avm/lib/avm/rspec/setup.rb +0 -3
  91. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +0 -2
  92. data/sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb +0 -2
  93. data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +0 -2
  94. data/sub/avm/lib/avm/rspec/shared_examples/with_launcher.rb +0 -2
  95. data/sub/avm/lib/avm/runner_with/file_replacer.rb +0 -2
  96. data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +13 -3
  97. data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +0 -2
  98. data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +0 -2
  99. data/sub/avm/lib/avm/scms/auto_commit/rules/last.rb +0 -2
  100. data/sub/avm/lib/avm/scms/auto_commit/rules/manual.rb +0 -2
  101. data/sub/avm/lib/avm/scms/auto_commit/rules/new.rb +1 -4
  102. data/sub/avm/lib/avm/scms/auto_commit/rules/nth.rb +0 -2
  103. data/sub/avm/lib/avm/scms/auto_commit/rules/unique.rb +0 -2
  104. data/sub/avm/lib/avm/scms/base.rb +0 -2
  105. data/sub/avm/lib/avm/scms/changed_file.rb +22 -0
  106. data/sub/avm/lib/avm/scms/null/commit.rb +0 -3
  107. data/sub/avm/lib/avm/scms/null.rb +0 -2
  108. data/sub/avm/lib/avm/self/docker_image.rb +0 -2
  109. data/sub/avm/lib/avm/self/instance.rb +0 -4
  110. data/sub/avm/lib/avm/source_generators/base.rb +0 -3
  111. data/sub/avm/lib/avm/source_generators/option_list.rb +0 -2
  112. data/sub/avm/lib/avm/source_generators/runner.rb +0 -1
  113. data/sub/avm/lib/avm/sources/base/application.rb +0 -1
  114. data/sub/avm/lib/avm/sources/base/instance.rb +0 -3
  115. data/sub/avm/lib/avm/sources/base/sub.rb +0 -2
  116. data/sub/avm/lib/avm/sources/base/subs.rb +0 -3
  117. data/sub/avm/lib/avm/sources/base/version_bump.rb +0 -2
  118. data/sub/avm/lib/avm/sources/base.rb +0 -5
  119. data/sub/avm/lib/avm/sources/tests/builder.rb +0 -3
  120. data/sub/avm/lib/avm/sources/tests/performer.rb +0 -2
  121. data/sub/avm/lib/avm/sources/tests/single.rb +0 -2
  122. data/sub/avm/lib/avm/version.rb +1 -1
  123. data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +2 -1
  124. data/sub/avm/spec/spec_helper.rb +3 -0
  125. data/sub/avm-git/Gemfile +8 -0
  126. data/sub/avm-git/avm-git.gemspec +25 -0
  127. data/sub/avm-git/lib/avm/git/application_scms/base/assert_main_at.rb +44 -0
  128. data/sub/avm-git/lib/avm/git/application_scms/base.rb +18 -0
  129. data/sub/avm-git/lib/avm/git/application_scms.rb +9 -0
  130. data/sub/avm-git/lib/avm/git/commit/class_methods.rb +29 -0
  131. data/sub/avm-git/lib/avm/git/commit/diff_tree_line.rb +32 -0
  132. data/sub/avm-git/lib/avm/git/commit/file.rb +42 -0
  133. data/sub/avm-git/lib/avm/git/commit.rb +57 -0
  134. data/sub/avm-git/lib/avm/git/issue/complete/commits.rb +40 -0
  135. data/sub/avm-git/lib/avm/git/issue/complete/git_subrepos.rb +20 -0
  136. data/sub/avm-git/lib/avm/git/issue/complete/local_branch.rb +59 -0
  137. data/sub/avm-git/lib/avm/git/issue/complete/local_tag.rb +37 -0
  138. data/sub/avm-git/lib/avm/git/issue/complete/push.rb +60 -0
  139. data/sub/avm-git/lib/avm/git/issue/complete/remote.rb +33 -0
  140. data/sub/avm-git/lib/avm/git/issue/complete/test.rb +34 -0
  141. data/sub/avm-git/lib/avm/git/issue/complete/tracker.rb +21 -0
  142. data/sub/avm-git/lib/avm/git/issue/complete/validation.rb +36 -0
  143. data/sub/avm-git/lib/avm/git/issue/complete/validations.rb +49 -0
  144. data/sub/avm-git/lib/avm/git/issue/complete/working_tree.rb +19 -0
  145. data/sub/avm-git/lib/avm/git/issue/complete.rb +66 -0
  146. data/sub/avm-git/lib/avm/git/issue.rb +10 -0
  147. data/sub/avm-git/lib/avm/git/launcher/base/class_methods.rb +28 -0
  148. data/sub/avm-git/lib/avm/git/launcher/base/dirty_files.rb +21 -0
  149. data/sub/avm-git/lib/avm/git/launcher/base/remotes.rb +37 -0
  150. data/sub/avm-git/lib/avm/git/launcher/base/subrepo.rb +42 -0
  151. data/sub/avm-git/lib/avm/git/launcher/base/underlying.rb +54 -0
  152. data/sub/avm-git/lib/avm/git/launcher/base.rb +81 -0
  153. data/sub/avm-git/lib/avm/git/launcher/error.rb +13 -0
  154. data/sub/avm-git/lib/avm/git/launcher/mirror_update.rb +36 -0
  155. data/sub/avm-git/lib/avm/git/launcher/publish_base.rb +127 -0
  156. data/sub/avm-git/lib/avm/git/launcher/remote.rb +53 -0
  157. data/sub/avm-git/lib/avm/git/launcher/sub_warp_base.rb +30 -0
  158. data/sub/avm-git/lib/avm/git/launcher/warp_base.rb +63 -0
  159. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/local_project_mixin.rb +16 -0
  160. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/publish.rb +13 -0
  161. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/warp.rb +25 -0
  162. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git.rb +22 -0
  163. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/publish.rb +29 -0
  164. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/warp.rb +82 -0
  165. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo.rb +32 -0
  166. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/publish.rb +12 -0
  167. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/warp.rb +29 -0
  168. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree.rb +47 -0
  169. data/sub/avm-git/lib/avm/git/launcher_stereotypes/provider.rb +17 -0
  170. data/sub/avm-git/lib/avm/git/launcher_stereotypes.rb +9 -0
  171. data/sub/avm-git/lib/avm/git/organize/reference_update.rb +32 -0
  172. data/sub/avm-git/lib/avm/git/organize/repository.rb +74 -0
  173. data/sub/avm-git/lib/avm/git/organize.rb +9 -0
  174. data/sub/avm-git/lib/avm/git/revision_test.rb +102 -0
  175. data/sub/avm-git/lib/avm/git/runners/base/commit.rb +96 -0
  176. data/sub/avm-git/lib/avm/git/runners/base/deploy.rb +108 -0
  177. data/sub/avm-git/lib/avm/git/runners/base/dirty_files.rb +42 -0
  178. data/sub/avm-git/lib/avm/git/runners/base/organize.rb +72 -0
  179. data/sub/avm-git/lib/avm/git/runners/base/revisions_test.rb +63 -0
  180. data/sub/avm-git/lib/avm/git/runners/base/subrepo/check.rb +45 -0
  181. data/sub/avm-git/lib/avm/git/runners/base/subrepo/clone.rb +80 -0
  182. data/sub/avm-git/lib/avm/git/runners/base/subrepo/fix.rb +69 -0
  183. data/sub/avm-git/lib/avm/git/runners/base/subrepo.rb +17 -0
  184. data/sub/avm-git/lib/avm/git/runners/base.rb +40 -0
  185. data/sub/avm-git/lib/avm/git/runners.rb +9 -0
  186. data/sub/avm-git/lib/avm/git/scms/git/branch.rb +28 -0
  187. data/sub/avm-git/lib/avm/git/scms/git/branches.rb +17 -0
  188. data/sub/avm-git/lib/avm/git/scms/git/change_tracker.rb +34 -0
  189. data/sub/avm-git/lib/avm/git/scms/git/changed_file.rb +25 -0
  190. data/sub/avm-git/lib/avm/git/scms/git/changed_files.rb +21 -0
  191. data/sub/avm-git/lib/avm/git/scms/git/commit/deploy.rb +37 -0
  192. data/sub/avm-git/lib/avm/git/scms/git/commit/deploy_methods.rb +24 -0
  193. data/sub/avm-git/lib/avm/git/scms/git/commit.rb +64 -0
  194. data/sub/avm-git/lib/avm/git/scms/git/commit_dirty.rb +32 -0
  195. data/sub/avm-git/lib/avm/git/scms/git/commits.rb +44 -0
  196. data/sub/avm-git/lib/avm/git/scms/git/interval.rb +28 -0
  197. data/sub/avm-git/lib/avm/git/scms/git/milestones.rb +18 -0
  198. data/sub/avm-git/lib/avm/git/scms/git/remote.rb +18 -0
  199. data/sub/avm-git/lib/avm/git/scms/git/remotes.rb +29 -0
  200. data/sub/avm-git/lib/avm/git/scms/git/run_commit.rb +54 -0
  201. data/sub/avm-git/lib/avm/git/scms/git.rb +46 -0
  202. data/sub/avm-git/lib/avm/git/scms/git_sub_base/changed_file.rb +19 -0
  203. data/sub/avm-git/lib/avm/git/scms/git_sub_base/commit.rb +23 -0
  204. data/sub/avm-git/lib/avm/git/scms/git_sub_base/interval.rb +23 -0
  205. data/sub/avm-git/lib/avm/git/scms/git_sub_base.rb +30 -0
  206. data/sub/avm-git/lib/avm/git/scms/git_subrepo.rb +33 -0
  207. data/sub/avm-git/lib/avm/git/scms/git_subtree.rb +29 -0
  208. data/sub/avm-git/lib/avm/git/scms/provider.rb +16 -0
  209. data/sub/avm-git/lib/avm/git/scms.rb +9 -0
  210. data/sub/avm-git/lib/avm/git/subrepo_check/parent.rb +48 -0
  211. data/sub/avm-git/lib/avm/git/subrepo_check/remote.rb +86 -0
  212. data/sub/avm-git/lib/avm/git/subrepo_check/show_result.rb +30 -0
  213. data/sub/avm-git/lib/avm/git/subrepo_check.rb +36 -0
  214. data/sub/avm-git/lib/avm/git/subrepo_checks.rb +57 -0
  215. data/sub/avm-git/lib/avm/git/vendor/github.rb +20 -0
  216. data/sub/avm-git/lib/avm/git/vendor.rb +9 -0
  217. data/sub/avm-git/lib/avm/git/version.rb +7 -0
  218. data/sub/avm-git/lib/avm/git.rb +16 -0
  219. data/sub/avm-git/locale/en.yml +6 -0
  220. data/sub/avm-git/locale/pt-BR.yml +6 -0
  221. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec.rb +13 -0
  222. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.source.out +1 -0
  223. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
  224. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.source.out +1 -0
  225. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
  226. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.source.out +1 -0
  227. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
  228. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.source.out +2 -0
  229. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
  230. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
  231. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
  232. data/sub/avm-git/spec/lib/avm/git/commit_spec.rb +56 -0
  233. data/sub/avm-git/spec/lib/avm/git/launcher/base_spec.rb +45 -0
  234. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec.rb +83 -0
  235. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec_files/config.yml +5 -0
  236. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec_settings.yml +6 -0
  237. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec.rb +53 -0
  238. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec_files/config.yml +3 -0
  239. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec_settings.yml +6 -0
  240. data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec.rb +126 -0
  241. data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec_files/append1/stub3.txt.template +1 -0
  242. data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec_files/append2/stub4.txt +1 -0
  243. data/sub/avm-git/spec/lib/avm/git/scms/git/commit/deploy_spec.rb +92 -0
  244. data/sub/avm-git/spec/lib/avm/git/scms/git_spec.rb +8 -0
  245. data/sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb +8 -0
  246. data/sub/avm-git/spec/lib/avm/git/vendor/github_spec.rb +23 -0
  247. data/sub/avm-git/spec/rubocop_spec.rb +3 -0
  248. data/sub/avm-git/spec/spec_helper.rb +5 -0
  249. data/sub/avm-tools/avm-tools.gemspec +3 -3
  250. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  251. data/sub/avm-tools/spec/spec_helper.rb +2 -0
  252. data/sub/eac_git/Gemfile +8 -0
  253. data/sub/eac_git/eac_git.gemspec +20 -0
  254. data/sub/eac_git/lib/eac_git/executables.rb +45 -0
  255. data/sub/eac_git/lib/eac_git/local/branch.rb +45 -0
  256. data/sub/eac_git/lib/eac_git/local/changed_file.rb +47 -0
  257. data/sub/eac_git/lib/eac_git/local/commit/archive.rb +17 -0
  258. data/sub/eac_git/lib/eac_git/local/commit/changed_file.rb +43 -0
  259. data/sub/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +32 -0
  260. data/sub/eac_git/lib/eac_git/local/commit.rb +71 -0
  261. data/sub/eac_git/lib/eac_git/local/dirty_files.rb +26 -0
  262. data/sub/eac_git/lib/eac_git/local/log.rb +14 -0
  263. data/sub/eac_git/lib/eac_git/local/remote/push.rb +33 -0
  264. data/sub/eac_git/lib/eac_git/local/remote.rb +47 -0
  265. data/sub/eac_git/lib/eac_git/local/remotes.rb +17 -0
  266. data/sub/eac_git/lib/eac_git/local/subrepo/config.rb +40 -0
  267. data/sub/eac_git/lib/eac_git/local/subrepo.rb +46 -0
  268. data/sub/eac_git/lib/eac_git/local.rb +124 -0
  269. data/sub/eac_git/lib/eac_git/remote.rb +20 -0
  270. data/sub/eac_git/lib/eac_git/remote_like/ls_result.rb +18 -0
  271. data/sub/eac_git/lib/eac_git/remote_like.rb +30 -0
  272. data/sub/eac_git/lib/eac_git/rspec/setup.rb +20 -0
  273. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/directory.rb +35 -0
  274. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/file.rb +21 -0
  275. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/fs_object.rb +25 -0
  276. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/repository.rb +30 -0
  277. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb +28 -0
  278. data/sub/eac_git/lib/eac_git/rspec.rb +7 -0
  279. data/sub/eac_git/lib/eac_git/version.rb +5 -0
  280. data/sub/eac_git/lib/eac_git.rb +9 -0
  281. data/sub/eac_git/spec/lib/eac_git/executables_spec.rb +11 -0
  282. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +11 -0
  283. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +1 -0
  284. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
  285. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +1 -0
  286. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
  287. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +1 -0
  288. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
  289. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +2 -0
  290. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
  291. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
  292. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
  293. data/sub/eac_git/spec/lib/eac_git/local/commit_spec.rb +56 -0
  294. data/sub/eac_git/spec/lib/eac_git/local/dirty_files_spec.rb +18 -0
  295. data/sub/eac_git/spec/rubocop_spec.rb +3 -0
  296. data/sub/eac_git/spec/spec_helper.rb +5 -0
  297. data/sub/eac_git/vendor/git-subrepo/Changes +110 -0
  298. data/sub/eac_git/vendor/git-subrepo/Intro.pod +509 -0
  299. data/sub/eac_git/vendor/git-subrepo/License +21 -0
  300. data/sub/eac_git/vendor/git-subrepo/Makefile +82 -0
  301. data/sub/eac_git/vendor/git-subrepo/Meta +28 -0
  302. data/sub/eac_git/vendor/git-subrepo/ReadMe.pod +698 -0
  303. data/sub/eac_git/vendor/git-subrepo/doc/comparison.swim +35 -0
  304. data/sub/eac_git/vendor/git-subrepo/doc/git-subrepo.swim +608 -0
  305. data/sub/eac_git/vendor/git-subrepo/doc/intro-to-subrepo.swim +387 -0
  306. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Changes +15 -0
  307. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/License +21 -0
  308. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Makefile +45 -0
  309. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Meta +28 -0
  310. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/ReadMe.pod +77 -0
  311. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/bin/bash+ +43 -0
  312. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +61 -0
  313. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +92 -0
  314. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +134 -0
  315. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +134 -0
  316. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/base.t +12 -0
  317. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/fcopy.t +22 -0
  318. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +3 -0
  319. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +3 -0
  320. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +18 -0
  321. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +23 -0
  322. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/test.bash +70 -0
  323. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/use.t +19 -0
  324. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Changes +15 -0
  325. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/License +21 -0
  326. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Makefile +20 -0
  327. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Meta +30 -0
  328. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +115 -0
  329. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +89 -0
  330. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +15 -0
  331. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +21 -0
  332. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +45 -0
  333. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +28 -0
  334. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +77 -0
  335. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +43 -0
  336. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +61 -0
  337. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +92 -0
  338. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +134 -0
  339. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +134 -0
  340. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +12 -0
  341. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +22 -0
  342. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +3 -0
  343. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +3 -0
  344. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +18 -0
  345. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +23 -0
  346. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +70 -0
  347. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +19 -0
  348. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +15 -0
  349. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +21 -0
  350. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +37 -0
  351. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +28 -0
  352. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +66 -0
  353. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +48 -0
  354. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +153 -0
  355. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +119 -0
  356. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +13 -0
  357. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +10 -0
  358. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +20 -0
  359. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +15 -0
  360. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +9 -0
  361. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +9 -0
  362. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +10 -0
  363. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +20 -0
  364. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +13 -0
  365. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +14 -0
  366. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +7 -0
  367. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +12 -0
  368. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +8 -0
  369. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +9 -0
  370. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +95 -0
  371. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +173 -0
  372. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/fail.t +20 -0
  373. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/more.t +20 -0
  374. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/pass.t +9 -0
  375. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/setup +8 -0
  376. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +11 -0
  377. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +12 -0
  378. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +10 -0
  379. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo +1903 -0
  380. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +1 -0
  381. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +339 -0
  382. data/sub/eac_git/vendor/git-subrepo/man/man1/git-subrepo.1 +743 -0
  383. data/sub/eac_git/vendor/git-subrepo/note/0.4.0 +12 -0
  384. data/sub/eac_git/vendor/git-subrepo/note/AllGitCmds +148 -0
  385. data/sub/eac_git/vendor/git-subrepo/note/Cases +32 -0
  386. data/sub/eac_git/vendor/git-subrepo/note/Commands +33 -0
  387. data/sub/eac_git/vendor/git-subrepo/note/Dags +199 -0
  388. data/sub/eac_git/vendor/git-subrepo/note/Gists +7 -0
  389. data/sub/eac_git/vendor/git-subrepo/note/Links +25 -0
  390. data/sub/eac_git/vendor/git-subrepo/note/Plugins +10 -0
  391. data/sub/eac_git/vendor/git-subrepo/note/Spec +39 -0
  392. data/sub/eac_git/vendor/git-subrepo/note/Story1 +57 -0
  393. data/sub/eac_git/vendor/git-subrepo/note/ToDo +55 -0
  394. data/sub/eac_git/vendor/git-subrepo/note/design.swim +137 -0
  395. data/sub/eac_git/vendor/git-subrepo/note/design2.swim +85 -0
  396. data/sub/eac_git/vendor/git-subrepo/note/init-test +38 -0
  397. data/sub/eac_git/vendor/git-subrepo/note/pull-dance.txt +18 -0
  398. data/sub/eac_git/vendor/git-subrepo/note/recreate-rebase-conflict.sh +56 -0
  399. data/sub/eac_git/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +29 -0
  400. data/sub/eac_git/vendor/git-subrepo/note/test-subrepo-push.sh +69 -0
  401. data/sub/eac_git/vendor/git-subrepo/note/test.sh +58 -0
  402. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-completion.pl +210 -0
  403. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +89 -0
  404. data/sub/eac_git/vendor/git-subrepo/share/completion.bash +42 -0
  405. data/sub/eac_git/vendor/git-subrepo/share/enable-completion.sh +50 -0
  406. data/sub/eac_git/vendor/git-subrepo/share/git-completion.bash +2738 -0
  407. data/sub/eac_git/vendor/git-subrepo/share/zsh-completion/_git-subrepo +81 -0
  408. data/sub/eac_git/vendor/git-subrepo/test/branch-all.t +41 -0
  409. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list-one-path.t +43 -0
  410. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list.t +47 -0
  411. data/sub/eac_git/vendor/git-subrepo/test/branch.t +52 -0
  412. data/sub/eac_git/vendor/git-subrepo/test/clean.t +43 -0
  413. data/sub/eac_git/vendor/git-subrepo/test/clone-annotated-tag.t +45 -0
  414. data/sub/eac_git/vendor/git-subrepo/test/clone.t +107 -0
  415. data/sub/eac_git/vendor/git-subrepo/test/compile.t +19 -0
  416. data/sub/eac_git/vendor/git-subrepo/test/config.t +58 -0
  417. data/sub/eac_git/vendor/git-subrepo/test/encode.t +91 -0
  418. data/sub/eac_git/vendor/git-subrepo/test/error.t +171 -0
  419. data/sub/eac_git/vendor/git-subrepo/test/fetch.t +43 -0
  420. data/sub/eac_git/vendor/git-subrepo/test/gitignore.t +61 -0
  421. data/sub/eac_git/vendor/git-subrepo/test/init.t +64 -0
  422. data/sub/eac_git/vendor/git-subrepo/test/issue29.t +98 -0
  423. data/sub/eac_git/vendor/git-subrepo/test/issue95.t +98 -0
  424. data/sub/eac_git/vendor/git-subrepo/test/issue96.t +96 -0
  425. data/sub/eac_git/vendor/git-subrepo/test/pull-all.t +38 -0
  426. data/sub/eac_git/vendor/git-subrepo/test/pull-merge.t +113 -0
  427. data/sub/eac_git/vendor/git-subrepo/test/pull-message.t +88 -0
  428. data/sub/eac_git/vendor/git-subrepo/test/pull-new-branch.t +58 -0
  429. data/sub/eac_git/vendor/git-subrepo/test/pull-ours.t +90 -0
  430. data/sub/eac_git/vendor/git-subrepo/test/pull-theirs.t +82 -0
  431. data/sub/eac_git/vendor/git-subrepo/test/pull-twice.t +44 -0
  432. data/sub/eac_git/vendor/git-subrepo/test/pull-worktree.t +40 -0
  433. data/sub/eac_git/vendor/git-subrepo/test/pull.t +99 -0
  434. data/sub/eac_git/vendor/git-subrepo/test/push-after-init.t +51 -0
  435. data/sub/eac_git/vendor/git-subrepo/test/push-force.t +56 -0
  436. data/sub/eac_git/vendor/git-subrepo/test/push-new-branch.t +61 -0
  437. data/sub/eac_git/vendor/git-subrepo/test/push-no-changes.t +29 -0
  438. data/sub/eac_git/vendor/git-subrepo/test/push-squash.t +56 -0
  439. data/sub/eac_git/vendor/git-subrepo/test/push.t +176 -0
  440. data/sub/eac_git/vendor/git-subrepo/test/reclone.t +45 -0
  441. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/HEAD +1 -0
  442. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/config +4 -0
  443. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
  444. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
  445. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
  446. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
  447. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  448. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
  449. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/heads/master +1 -0
  450. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/tags/A +1 -0
  451. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/HEAD +1 -0
  452. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/config +4 -0
  453. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
  454. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
  455. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  456. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/refs/heads/master +1 -0
  457. data/sub/eac_git/vendor/git-subrepo/test/repo/init/HEAD +1 -0
  458. data/sub/eac_git/vendor/git-subrepo/test/repo/init/config +5 -0
  459. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
  460. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
  461. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +2 -0
  462. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
  463. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
  464. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
  465. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
  466. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
  467. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +1 -0
  468. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
  469. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
  470. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +1 -0
  471. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
  472. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
  473. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +3 -0
  474. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +2 -0
  475. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +2 -0
  476. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +1 -0
  477. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
  478. data/sub/eac_git/vendor/git-subrepo/test/repo/init/refs/heads/master +1 -0
  479. data/sub/eac_git/vendor/git-subrepo/test/setup +205 -0
  480. data/sub/eac_git/vendor/git-subrepo/test/status.t +68 -0
  481. data/sub/eac_git/vendor/git-subrepo/test/submodule.t +45 -0
  482. metadata +364 -16
@@ -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