eac_tools 0.101.0 → 0.101.1

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 (707) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +53 -77
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/lib/avm/entries/base.rb +1 -1
  5. data/sub/avm/lib/avm/version.rb +1 -1
  6. data/sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec +3 -3
  7. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base.rb +1 -1
  8. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/version.rb +1 -1
  9. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0.rb +2 -0
  10. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +25 -0
  11. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/executables.rb +26 -0
  12. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css/file_apply.rb +48 -0
  13. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css.rb +22 -0
  14. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/html.rb +43 -0
  15. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/javascript.rb +22 -0
  16. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/json.rb +25 -0
  17. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/provider.rb +24 -0
  18. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/xml.rb +26 -0
  19. data/sub/{avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems.rb → avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats.rb} +4 -2
  20. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_base.rb +33 -0
  21. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_host.rb +78 -0
  22. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_path.rb +42 -0
  23. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/apache.rb +42 -0
  24. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/deploy.rb +30 -0
  25. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/deploy_info.rb +30 -0
  26. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/install.rb +22 -0
  27. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base.rb +44 -0
  28. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/appended_directories.rb +27 -0
  29. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/build.rb +50 -0
  30. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/info.rb +47 -0
  31. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/scm.rb +88 -0
  32. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/setup_files_unit.rb +53 -0
  33. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/write_on_target.rb +20 -0
  34. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy.rb +76 -0
  35. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy_info.rb +37 -0
  36. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/processes/web_server.rb +37 -0
  37. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/processes.rb +13 -0
  38. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/apache_host.rb +36 -0
  39. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/apache_path.rb +40 -0
  40. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/data/load.rb +60 -0
  41. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/deploy.rb +51 -0
  42. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/deploy_info.rb +28 -0
  43. data/sub/{avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources → avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances}/runners.rb +4 -2
  44. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/sources/base.rb +15 -0
  45. data/sub/{avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners.rb → avm-eac_webapp_base0/lib/avm/eac_webapp_base0/sources.rb} +4 -2
  46. data/sub/{avm-eac_ruby_base1/lib/avm/eac_ruby_base1 → avm-eac_webapp_base0/lib/avm/eac_webapp_base0}/version.rb +2 -2
  47. data/sub/{avm-eac_ruby_base1/lib/avm/eac_ruby_base1.rb → avm-eac_webapp_base0/lib/avm/eac_webapp_base0.rb} +3 -6
  48. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec.rb +7 -0
  49. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.source.css +11 -0
  50. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.target.css +11 -0
  51. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec.rb +7 -0
  52. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.erb.source +8 -0
  53. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.erb.target +8 -0
  54. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.source +5 -0
  55. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.target +5 -0
  56. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec.rb +7 -0
  57. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files/javascript_code1.js.source +29 -0
  58. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files/javascript_code1.js.target +21 -0
  59. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec.rb +7 -0
  60. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files/json_code.json.source +8 -0
  61. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files/json_code.json.target +7 -0
  62. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec.rb +7 -0
  63. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files/xml_code.xml.source +11 -0
  64. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files/xml_code.xml.target +9 -0
  65. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/instances/base_spec.rb +11 -0
  66. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/sources/base_spec.rb +7 -0
  67. data/sub/{avm-eac_ruby_base1 → avm-eac_webapp_base0}/spec/spec_helper.rb +1 -1
  68. data/sub/avm-eac_webapp_base0/template/avm/eac_webapp_base0/instances/apache_host/no_ssl.conf +11 -0
  69. data/sub/avm-eac_webapp_base0/template/avm/eac_webapp_base0/instances/apache_path/default.conf +7 -0
  70. data/sub/avm-tools/avm-tools.gemspec +1 -1
  71. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  72. data/sub/avm-tools/lib/avm/tools.rb +3 -3
  73. metadata +84 -644
  74. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +0 -22
  75. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb +0 -54
  76. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/dependency.rb +0 -17
  77. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile.rb +0 -32
  78. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/depends_on.rb +0 -22
  79. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/gem_conflict.rb +0 -41
  80. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/in_gemfile.rb +0 -14
  81. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb +0 -73
  82. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_factory.rb +0 -26
  83. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_parser_base.rb +0 -17
  84. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/ruby_requirement.rb +0 -13
  85. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/version_requirement.rb +0 -23
  86. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser.rb +0 -23
  87. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base/file_resource_name.rb +0 -44
  88. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base.rb +0 -21
  89. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/instances/mixin.rb +0 -17
  90. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/build.rb +0 -120
  91. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/specification.rb +0 -61
  92. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/local_project_mixin.rb +0 -24
  93. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish.rb +0 -122
  94. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base.rb +0 -33
  95. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/preferred_version_requirements.rb +0 -40
  96. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/setup.rb +0 -15
  97. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/source_generator.rb +0 -20
  98. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec.rb +0 -9
  99. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/configured.rb +0 -29
  100. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/envvar.rb +0 -15
  101. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/gemfile.rb +0 -39
  102. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop.rb +0 -52
  103. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/add_or_replace_gem_line.rb +0 -69
  104. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/dependency.rb +0 -23
  105. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec.rb +0 -57
  106. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/remote.rb +0 -33
  107. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/version_file.rb +0 -43
  108. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/lib_rename.rb +0 -74
  109. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/rubocop.rb +0 -27
  110. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base.rb +0 -16
  111. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +0 -59
  112. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemfile_lock.rb +0 -23
  113. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/options.rb +0 -32
  114. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/root_module.rb +0 -35
  115. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb +0 -58
  116. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base.rb +0 -83
  117. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundle_command.rb +0 -35
  118. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundler.rb +0 -64
  119. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rake.rb +0 -39
  120. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop.rb +0 -23
  121. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop_command.rb +0 -70
  122. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubygems.rb +0 -40
  123. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/update.rb +0 -21
  124. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version.rb +0 -29
  125. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version_bump.rb +0 -16
  126. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base.rb +0 -58
  127. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/bundle_update.rb +0 -21
  128. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local/sibling.rb +0 -51
  129. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local.rb +0 -67
  130. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb +0 -55
  131. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundle.rb +0 -26
  132. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_local.rb +0 -57
  133. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock/git.rb +0 -58
  134. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock.rb +0 -87
  135. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/incompatible.rb +0 -73
  136. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler.rb +0 -17
  137. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/update_dependencies_requirements.rb +0 -67
  138. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/base.rb +0 -55
  139. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/minitest.rb +0 -27
  140. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/decorated_gem.rb +0 -50
  141. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/result.rb +0 -29
  142. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple.rb +0 -86
  143. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/rspec.rb +0 -23
  144. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/sub_update.rb +0 -57
  145. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update_dependency_requirements.rb +0 -63
  146. data/sub/avm-eac_ruby_base1/locale/en.yml +0 -9
  147. data/sub/avm-eac_ruby_base1/locale/pt-BR.yml +0 -9
  148. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec.rb +0 -5
  149. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.source.out +0 -192
  150. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.target.yaml +0 -300
  151. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.source.out +0 -245
  152. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.target.yaml +0 -355
  153. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.source.out +0 -0
  154. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.target.yaml +0 -305
  155. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec.rb +0 -13
  156. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.source +0 -6
  157. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.target +0 -3
  158. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.source +0 -6
  159. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.target +0 -5
  160. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/build_spec.rb +0 -43
  161. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/specification_spec.rb +0 -57
  162. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish_spec.rb +0 -25
  163. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base_spec.rb +0 -21
  164. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/preferred_version_requirements_spec.rb +0 -21
  165. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec.rb +0 -35
  166. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.source.yaml +0 -5
  167. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.target.txt +0 -15
  168. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/the_gem.gemspec +0 -15
  169. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec.rb +0 -13
  170. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec_files/a_version_file.rb +0 -7
  171. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec.rb +0 -33
  172. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile +0 -5
  173. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile.lock +0 -27
  174. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir2/empty.rb +0 -1
  175. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir4/false_command.rb +0 -4
  176. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +0 -16
  177. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile +0 -8
  178. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile.lock +0 -1
  179. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/_gitignore +0 -2
  180. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/dashed-mygem.gemspec +0 -19
  181. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem/version.rb +0 -7
  182. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem.rb +0 -9
  183. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/spec_helper.rb +0 -5
  184. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile +0 -8
  185. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile.lock +0 -1
  186. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/_gitignore +0 -2
  187. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem/version.rb +0 -5
  188. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem.rb +0 -7
  189. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/mygem.gemspec +0 -19
  190. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/rubocop_spec.rb +0 -3
  191. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/spec_helper.rb +0 -5
  192. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec.rb +0 -28
  193. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile +0 -5
  194. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile.lock +0 -19
  195. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Rakefile +0 -14
  196. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/exe/myrunner +0 -5
  197. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem/version.rb +0 -5
  198. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem.rb +0 -7
  199. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/mygem.gemspec +0 -17
  200. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base_spec.rb +0 -13
  201. data/sub/avm-eac_ruby_base1/spec/rubocop_spec.rb +0 -3
  202. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/gemspec.template +0 -19
  203. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/root_lib.template +0 -7
  204. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/Gemfile +0 -8
  205. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/rubocop_spec.rb +0 -3
  206. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/spec_helper.rb.template +0 -5
  207. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/version.template +0 -5
  208. data/sub/avm-git/Gemfile +0 -8
  209. data/sub/avm-git/avm-git.gemspec +0 -25
  210. data/sub/avm-git/lib/avm/git/application_scms/base/assert_main_at.rb +0 -44
  211. data/sub/avm-git/lib/avm/git/application_scms/base.rb +0 -18
  212. data/sub/avm-git/lib/avm/git/application_scms.rb +0 -9
  213. data/sub/avm-git/lib/avm/git/commit/class_methods.rb +0 -29
  214. data/sub/avm-git/lib/avm/git/commit/diff_tree_line.rb +0 -32
  215. data/sub/avm-git/lib/avm/git/commit/file.rb +0 -42
  216. data/sub/avm-git/lib/avm/git/commit.rb +0 -57
  217. data/sub/avm-git/lib/avm/git/issue/complete/commits.rb +0 -40
  218. data/sub/avm-git/lib/avm/git/issue/complete/git_subrepos.rb +0 -20
  219. data/sub/avm-git/lib/avm/git/issue/complete/local_branch.rb +0 -59
  220. data/sub/avm-git/lib/avm/git/issue/complete/local_tag.rb +0 -37
  221. data/sub/avm-git/lib/avm/git/issue/complete/push.rb +0 -60
  222. data/sub/avm-git/lib/avm/git/issue/complete/remote.rb +0 -33
  223. data/sub/avm-git/lib/avm/git/issue/complete/test.rb +0 -34
  224. data/sub/avm-git/lib/avm/git/issue/complete/tracker.rb +0 -21
  225. data/sub/avm-git/lib/avm/git/issue/complete/validation.rb +0 -36
  226. data/sub/avm-git/lib/avm/git/issue/complete/validations.rb +0 -49
  227. data/sub/avm-git/lib/avm/git/issue/complete/working_tree.rb +0 -19
  228. data/sub/avm-git/lib/avm/git/issue/complete.rb +0 -66
  229. data/sub/avm-git/lib/avm/git/issue.rb +0 -10
  230. data/sub/avm-git/lib/avm/git/launcher/base/class_methods.rb +0 -28
  231. data/sub/avm-git/lib/avm/git/launcher/base/dirty_files.rb +0 -21
  232. data/sub/avm-git/lib/avm/git/launcher/base/remotes.rb +0 -37
  233. data/sub/avm-git/lib/avm/git/launcher/base/subrepo.rb +0 -42
  234. data/sub/avm-git/lib/avm/git/launcher/base/underlying.rb +0 -54
  235. data/sub/avm-git/lib/avm/git/launcher/base.rb +0 -81
  236. data/sub/avm-git/lib/avm/git/launcher/error.rb +0 -13
  237. data/sub/avm-git/lib/avm/git/launcher/mirror_update.rb +0 -36
  238. data/sub/avm-git/lib/avm/git/launcher/publish_base.rb +0 -127
  239. data/sub/avm-git/lib/avm/git/launcher/remote.rb +0 -53
  240. data/sub/avm-git/lib/avm/git/launcher/sub_warp_base.rb +0 -30
  241. data/sub/avm-git/lib/avm/git/launcher/warp_base.rb +0 -63
  242. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/local_project_mixin.rb +0 -16
  243. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/publish.rb +0 -13
  244. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/warp.rb +0 -25
  245. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git.rb +0 -22
  246. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/publish.rb +0 -29
  247. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/warp.rb +0 -82
  248. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo.rb +0 -32
  249. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/publish.rb +0 -12
  250. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/warp.rb +0 -29
  251. data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree.rb +0 -47
  252. data/sub/avm-git/lib/avm/git/launcher_stereotypes/provider.rb +0 -17
  253. data/sub/avm-git/lib/avm/git/launcher_stereotypes.rb +0 -9
  254. data/sub/avm-git/lib/avm/git/organize/reference_update.rb +0 -32
  255. data/sub/avm-git/lib/avm/git/organize/repository.rb +0 -74
  256. data/sub/avm-git/lib/avm/git/organize.rb +0 -9
  257. data/sub/avm-git/lib/avm/git/revision_test.rb +0 -102
  258. data/sub/avm-git/lib/avm/git/runners/base/commit.rb +0 -96
  259. data/sub/avm-git/lib/avm/git/runners/base/deploy.rb +0 -108
  260. data/sub/avm-git/lib/avm/git/runners/base/dirty_files.rb +0 -42
  261. data/sub/avm-git/lib/avm/git/runners/base/organize.rb +0 -72
  262. data/sub/avm-git/lib/avm/git/runners/base/revisions_test.rb +0 -63
  263. data/sub/avm-git/lib/avm/git/runners/base/subrepo/check.rb +0 -45
  264. data/sub/avm-git/lib/avm/git/runners/base/subrepo/clone.rb +0 -80
  265. data/sub/avm-git/lib/avm/git/runners/base/subrepo/fix.rb +0 -69
  266. data/sub/avm-git/lib/avm/git/runners/base/subrepo.rb +0 -17
  267. data/sub/avm-git/lib/avm/git/runners/base.rb +0 -40
  268. data/sub/avm-git/lib/avm/git/runners.rb +0 -9
  269. data/sub/avm-git/lib/avm/git/scms/git/branch.rb +0 -28
  270. data/sub/avm-git/lib/avm/git/scms/git/branches.rb +0 -17
  271. data/sub/avm-git/lib/avm/git/scms/git/change_tracker.rb +0 -34
  272. data/sub/avm-git/lib/avm/git/scms/git/changed_file.rb +0 -25
  273. data/sub/avm-git/lib/avm/git/scms/git/changed_files.rb +0 -21
  274. data/sub/avm-git/lib/avm/git/scms/git/commit/deploy.rb +0 -37
  275. data/sub/avm-git/lib/avm/git/scms/git/commit/deploy_methods.rb +0 -24
  276. data/sub/avm-git/lib/avm/git/scms/git/commit.rb +0 -64
  277. data/sub/avm-git/lib/avm/git/scms/git/commit_dirty.rb +0 -32
  278. data/sub/avm-git/lib/avm/git/scms/git/commits.rb +0 -44
  279. data/sub/avm-git/lib/avm/git/scms/git/interval.rb +0 -28
  280. data/sub/avm-git/lib/avm/git/scms/git/milestones.rb +0 -18
  281. data/sub/avm-git/lib/avm/git/scms/git/remote.rb +0 -18
  282. data/sub/avm-git/lib/avm/git/scms/git/remotes.rb +0 -29
  283. data/sub/avm-git/lib/avm/git/scms/git/run_commit.rb +0 -54
  284. data/sub/avm-git/lib/avm/git/scms/git.rb +0 -46
  285. data/sub/avm-git/lib/avm/git/scms/git_sub_base/changed_file.rb +0 -19
  286. data/sub/avm-git/lib/avm/git/scms/git_sub_base/commit.rb +0 -23
  287. data/sub/avm-git/lib/avm/git/scms/git_sub_base/interval.rb +0 -23
  288. data/sub/avm-git/lib/avm/git/scms/git_sub_base.rb +0 -30
  289. data/sub/avm-git/lib/avm/git/scms/git_subrepo.rb +0 -33
  290. data/sub/avm-git/lib/avm/git/scms/git_subtree.rb +0 -29
  291. data/sub/avm-git/lib/avm/git/scms/provider.rb +0 -16
  292. data/sub/avm-git/lib/avm/git/scms.rb +0 -9
  293. data/sub/avm-git/lib/avm/git/subrepo_check/parent.rb +0 -48
  294. data/sub/avm-git/lib/avm/git/subrepo_check/remote.rb +0 -86
  295. data/sub/avm-git/lib/avm/git/subrepo_check/show_result.rb +0 -30
  296. data/sub/avm-git/lib/avm/git/subrepo_check.rb +0 -36
  297. data/sub/avm-git/lib/avm/git/subrepo_checks.rb +0 -57
  298. data/sub/avm-git/lib/avm/git/vendor/github.rb +0 -20
  299. data/sub/avm-git/lib/avm/git/vendor.rb +0 -9
  300. data/sub/avm-git/lib/avm/git/version.rb +0 -7
  301. data/sub/avm-git/lib/avm/git.rb +0 -16
  302. data/sub/avm-git/locale/en.yml +0 -6
  303. data/sub/avm-git/locale/pt-BR.yml +0 -6
  304. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec.rb +0 -13
  305. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.source.out +0 -1
  306. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.target.yaml +0 -7
  307. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.source.out +0 -1
  308. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.target.yaml +0 -7
  309. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.source.out +0 -1
  310. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.target.yaml +0 -7
  311. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.source.out +0 -2
  312. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.target.yaml +0 -13
  313. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.source.out +0 -2
  314. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.target.yaml +0 -13
  315. data/sub/avm-git/spec/lib/avm/git/commit_spec.rb +0 -56
  316. data/sub/avm-git/spec/lib/avm/git/launcher/base_spec.rb +0 -45
  317. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec.rb +0 -83
  318. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec_files/config.yml +0 -5
  319. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec_settings.yml +0 -6
  320. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec.rb +0 -53
  321. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec_files/config.yml +0 -3
  322. data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec_settings.yml +0 -6
  323. data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec.rb +0 -126
  324. data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec_files/append1/stub3.txt.template +0 -1
  325. data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec_files/append2/stub4.txt +0 -1
  326. data/sub/avm-git/spec/lib/avm/git/scms/git/commit/deploy_spec.rb +0 -92
  327. data/sub/avm-git/spec/lib/avm/git/scms/git_spec.rb +0 -8
  328. data/sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb +0 -8
  329. data/sub/avm-git/spec/lib/avm/git/vendor/github_spec.rb +0 -23
  330. data/sub/avm-git/spec/rubocop_spec.rb +0 -3
  331. data/sub/avm-git/spec/spec_helper.rb +0 -5
  332. data/sub/eac_git/Gemfile +0 -8
  333. data/sub/eac_git/eac_git.gemspec +0 -20
  334. data/sub/eac_git/lib/eac_git/executables.rb +0 -45
  335. data/sub/eac_git/lib/eac_git/local/branch.rb +0 -45
  336. data/sub/eac_git/lib/eac_git/local/changed_file.rb +0 -47
  337. data/sub/eac_git/lib/eac_git/local/commit/archive.rb +0 -17
  338. data/sub/eac_git/lib/eac_git/local/commit/changed_file.rb +0 -43
  339. data/sub/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +0 -32
  340. data/sub/eac_git/lib/eac_git/local/commit.rb +0 -71
  341. data/sub/eac_git/lib/eac_git/local/dirty_files.rb +0 -26
  342. data/sub/eac_git/lib/eac_git/local/log.rb +0 -14
  343. data/sub/eac_git/lib/eac_git/local/remote/push.rb +0 -33
  344. data/sub/eac_git/lib/eac_git/local/remote.rb +0 -47
  345. data/sub/eac_git/lib/eac_git/local/remotes.rb +0 -17
  346. data/sub/eac_git/lib/eac_git/local/subrepo/config.rb +0 -40
  347. data/sub/eac_git/lib/eac_git/local/subrepo.rb +0 -46
  348. data/sub/eac_git/lib/eac_git/local.rb +0 -124
  349. data/sub/eac_git/lib/eac_git/remote.rb +0 -20
  350. data/sub/eac_git/lib/eac_git/remote_like/ls_result.rb +0 -18
  351. data/sub/eac_git/lib/eac_git/remote_like.rb +0 -30
  352. data/sub/eac_git/lib/eac_git/rspec/setup.rb +0 -20
  353. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/directory.rb +0 -35
  354. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/file.rb +0 -21
  355. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/fs_object.rb +0 -25
  356. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/repository.rb +0 -30
  357. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb +0 -28
  358. data/sub/eac_git/lib/eac_git/rspec.rb +0 -7
  359. data/sub/eac_git/lib/eac_git/version.rb +0 -5
  360. data/sub/eac_git/lib/eac_git.rb +0 -9
  361. data/sub/eac_git/spec/lib/eac_git/executables_spec.rb +0 -11
  362. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +0 -11
  363. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +0 -1
  364. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +0 -7
  365. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +0 -1
  366. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +0 -7
  367. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +0 -1
  368. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +0 -7
  369. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +0 -2
  370. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +0 -13
  371. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +0 -2
  372. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +0 -13
  373. data/sub/eac_git/spec/lib/eac_git/local/commit_spec.rb +0 -56
  374. data/sub/eac_git/spec/lib/eac_git/local/dirty_files_spec.rb +0 -18
  375. data/sub/eac_git/spec/rubocop_spec.rb +0 -3
  376. data/sub/eac_git/spec/spec_helper.rb +0 -5
  377. data/sub/eac_git/vendor/git-subrepo/Changes +0 -110
  378. data/sub/eac_git/vendor/git-subrepo/Intro.pod +0 -509
  379. data/sub/eac_git/vendor/git-subrepo/License +0 -21
  380. data/sub/eac_git/vendor/git-subrepo/Makefile +0 -82
  381. data/sub/eac_git/vendor/git-subrepo/Meta +0 -28
  382. data/sub/eac_git/vendor/git-subrepo/ReadMe.pod +0 -698
  383. data/sub/eac_git/vendor/git-subrepo/doc/comparison.swim +0 -35
  384. data/sub/eac_git/vendor/git-subrepo/doc/git-subrepo.swim +0 -608
  385. data/sub/eac_git/vendor/git-subrepo/doc/intro-to-subrepo.swim +0 -387
  386. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Changes +0 -15
  387. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/License +0 -21
  388. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Makefile +0 -45
  389. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Meta +0 -28
  390. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/ReadMe.pod +0 -77
  391. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/bin/bash+ +0 -43
  392. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +0 -61
  393. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +0 -92
  394. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +0 -134
  395. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +0 -134
  396. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/base.t +0 -12
  397. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/fcopy.t +0 -22
  398. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +0 -3
  399. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +0 -3
  400. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +0 -18
  401. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +0 -23
  402. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/test.bash +0 -70
  403. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/use.t +0 -19
  404. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Changes +0 -15
  405. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/License +0 -21
  406. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Makefile +0 -20
  407. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Meta +0 -30
  408. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +0 -115
  409. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +0 -89
  410. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +0 -15
  411. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +0 -21
  412. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +0 -45
  413. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +0 -28
  414. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +0 -77
  415. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +0 -43
  416. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +0 -61
  417. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +0 -92
  418. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +0 -134
  419. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +0 -134
  420. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +0 -12
  421. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +0 -22
  422. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +0 -3
  423. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +0 -3
  424. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +0 -18
  425. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +0 -23
  426. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +0 -70
  427. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +0 -19
  428. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +0 -15
  429. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +0 -21
  430. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +0 -37
  431. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +0 -28
  432. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +0 -66
  433. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +0 -48
  434. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +0 -153
  435. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +0 -119
  436. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +0 -13
  437. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +0 -10
  438. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +0 -20
  439. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +0 -15
  440. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +0 -9
  441. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +0 -9
  442. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +0 -10
  443. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +0 -20
  444. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +0 -13
  445. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +0 -14
  446. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +0 -7
  447. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +0 -12
  448. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +0 -8
  449. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +0 -9
  450. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +0 -95
  451. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +0 -173
  452. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/fail.t +0 -20
  453. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/more.t +0 -20
  454. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/pass.t +0 -9
  455. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/setup +0 -8
  456. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +0 -11
  457. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +0 -12
  458. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +0 -10
  459. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo +0 -1903
  460. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +0 -1
  461. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +0 -339
  462. data/sub/eac_git/vendor/git-subrepo/man/man1/git-subrepo.1 +0 -743
  463. data/sub/eac_git/vendor/git-subrepo/note/0.4.0 +0 -12
  464. data/sub/eac_git/vendor/git-subrepo/note/AllGitCmds +0 -148
  465. data/sub/eac_git/vendor/git-subrepo/note/Cases +0 -32
  466. data/sub/eac_git/vendor/git-subrepo/note/Commands +0 -33
  467. data/sub/eac_git/vendor/git-subrepo/note/Dags +0 -199
  468. data/sub/eac_git/vendor/git-subrepo/note/Gists +0 -7
  469. data/sub/eac_git/vendor/git-subrepo/note/Links +0 -25
  470. data/sub/eac_git/vendor/git-subrepo/note/Plugins +0 -10
  471. data/sub/eac_git/vendor/git-subrepo/note/Spec +0 -39
  472. data/sub/eac_git/vendor/git-subrepo/note/Story1 +0 -57
  473. data/sub/eac_git/vendor/git-subrepo/note/ToDo +0 -55
  474. data/sub/eac_git/vendor/git-subrepo/note/design.swim +0 -137
  475. data/sub/eac_git/vendor/git-subrepo/note/design2.swim +0 -85
  476. data/sub/eac_git/vendor/git-subrepo/note/init-test +0 -38
  477. data/sub/eac_git/vendor/git-subrepo/note/pull-dance.txt +0 -18
  478. data/sub/eac_git/vendor/git-subrepo/note/recreate-rebase-conflict.sh +0 -56
  479. data/sub/eac_git/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +0 -29
  480. data/sub/eac_git/vendor/git-subrepo/note/test-subrepo-push.sh +0 -69
  481. data/sub/eac_git/vendor/git-subrepo/note/test.sh +0 -58
  482. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-completion.pl +0 -210
  483. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +0 -89
  484. data/sub/eac_git/vendor/git-subrepo/share/completion.bash +0 -42
  485. data/sub/eac_git/vendor/git-subrepo/share/enable-completion.sh +0 -50
  486. data/sub/eac_git/vendor/git-subrepo/share/git-completion.bash +0 -2738
  487. data/sub/eac_git/vendor/git-subrepo/share/zsh-completion/_git-subrepo +0 -81
  488. data/sub/eac_git/vendor/git-subrepo/test/branch-all.t +0 -41
  489. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list-one-path.t +0 -43
  490. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list.t +0 -47
  491. data/sub/eac_git/vendor/git-subrepo/test/branch.t +0 -52
  492. data/sub/eac_git/vendor/git-subrepo/test/clean.t +0 -43
  493. data/sub/eac_git/vendor/git-subrepo/test/clone-annotated-tag.t +0 -45
  494. data/sub/eac_git/vendor/git-subrepo/test/clone.t +0 -107
  495. data/sub/eac_git/vendor/git-subrepo/test/compile.t +0 -19
  496. data/sub/eac_git/vendor/git-subrepo/test/config.t +0 -58
  497. data/sub/eac_git/vendor/git-subrepo/test/encode.t +0 -91
  498. data/sub/eac_git/vendor/git-subrepo/test/error.t +0 -171
  499. data/sub/eac_git/vendor/git-subrepo/test/fetch.t +0 -43
  500. data/sub/eac_git/vendor/git-subrepo/test/gitignore.t +0 -61
  501. data/sub/eac_git/vendor/git-subrepo/test/init.t +0 -64
  502. data/sub/eac_git/vendor/git-subrepo/test/issue29.t +0 -98
  503. data/sub/eac_git/vendor/git-subrepo/test/issue95.t +0 -98
  504. data/sub/eac_git/vendor/git-subrepo/test/issue96.t +0 -96
  505. data/sub/eac_git/vendor/git-subrepo/test/pull-all.t +0 -38
  506. data/sub/eac_git/vendor/git-subrepo/test/pull-merge.t +0 -113
  507. data/sub/eac_git/vendor/git-subrepo/test/pull-message.t +0 -88
  508. data/sub/eac_git/vendor/git-subrepo/test/pull-new-branch.t +0 -58
  509. data/sub/eac_git/vendor/git-subrepo/test/pull-ours.t +0 -90
  510. data/sub/eac_git/vendor/git-subrepo/test/pull-theirs.t +0 -82
  511. data/sub/eac_git/vendor/git-subrepo/test/pull-twice.t +0 -44
  512. data/sub/eac_git/vendor/git-subrepo/test/pull-worktree.t +0 -40
  513. data/sub/eac_git/vendor/git-subrepo/test/pull.t +0 -99
  514. data/sub/eac_git/vendor/git-subrepo/test/push-after-init.t +0 -51
  515. data/sub/eac_git/vendor/git-subrepo/test/push-force.t +0 -56
  516. data/sub/eac_git/vendor/git-subrepo/test/push-new-branch.t +0 -61
  517. data/sub/eac_git/vendor/git-subrepo/test/push-no-changes.t +0 -29
  518. data/sub/eac_git/vendor/git-subrepo/test/push-squash.t +0 -56
  519. data/sub/eac_git/vendor/git-subrepo/test/push.t +0 -176
  520. data/sub/eac_git/vendor/git-subrepo/test/reclone.t +0 -45
  521. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/HEAD +0 -1
  522. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/config +0 -4
  523. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
  524. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
  525. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
  526. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
  527. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  528. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
  529. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/heads/master +0 -1
  530. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/tags/A +0 -1
  531. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/HEAD +0 -1
  532. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/config +0 -4
  533. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
  534. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
  535. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  536. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/refs/heads/master +0 -1
  537. data/sub/eac_git/vendor/git-subrepo/test/repo/init/HEAD +0 -1
  538. data/sub/eac_git/vendor/git-subrepo/test/repo/init/config +0 -5
  539. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
  540. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
  541. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +0 -2
  542. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
  543. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
  544. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
  545. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
  546. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
  547. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +0 -1
  548. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
  549. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
  550. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +0 -1
  551. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
  552. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
  553. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +0 -3
  554. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +0 -2
  555. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +0 -2
  556. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +0 -1
  557. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
  558. data/sub/eac_git/vendor/git-subrepo/test/repo/init/refs/heads/master +0 -1
  559. data/sub/eac_git/vendor/git-subrepo/test/setup +0 -205
  560. data/sub/eac_git/vendor/git-subrepo/test/status.t +0 -68
  561. data/sub/eac_git/vendor/git-subrepo/test/submodule.t +0 -45
  562. data/sub/eac_ruby_base0/Gemfile +0 -8
  563. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +0 -22
  564. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application.rb +0 -88
  565. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb +0 -34
  566. data/sub/eac_ruby_base0/lib/eac_ruby_base0/core_ext.rb +0 -5
  567. data/sub/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +0 -31
  568. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/class/jobs_runner.rb +0 -9
  569. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/class.rb +0 -4
  570. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches.rb +0 -4
  571. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec/setup.rb +0 -14
  572. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec.rb +0 -9
  573. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/contexts.rb +0 -52
  574. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/prepend.rb +0 -39
  575. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +0 -37
  576. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner_with.rb +0 -9
  577. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +0 -5
  578. data/sub/eac_ruby_base0/lib/eac_ruby_base0.rb +0 -12
  579. data/sub/eac_ruby_base0/spec/rubocop_spec.rb +0 -3
  580. data/sub/eac_ruby_base0/spec/spec_helper.rb +0 -4
  581. data/sub/eac_ruby_gem_support/Gemfile +0 -8
  582. data/sub/eac_ruby_gem_support/eac_ruby_gem_support.gemspec +0 -25
  583. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/filesystem.rb +0 -73
  584. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/utils.rb +0 -22
  585. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/setup.rb +0 -55
  586. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures.rb +0 -76
  587. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths.rb +0 -14
  588. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/source_target_fixtures_controller.rb +0 -32
  589. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/spec_paths_controller.rb +0 -29
  590. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/specs/rubocop.rb +0 -33
  591. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures/source_target_file.rb +0 -19
  592. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures.rb +0 -74
  593. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/version.rb +0 -5
  594. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support.rb +0 -11
  595. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/helpers/filesystem_spec.rb +0 -30
  596. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec.rb +0 -11
  597. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.source.yaml +0 -2
  598. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.target.yaml +0 -2
  599. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths_spec.rb +0 -19
  600. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec.rb +0 -27
  601. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.source.txt +0 -1
  602. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.target.html +0 -1
  603. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub2.source.html +0 -1
  604. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub3.target.yaml +0 -1
  605. data/sub/eac_ruby_gem_support/spec/lib/rubocop_check_spec.rb +0 -3
  606. data/sub/eac_ruby_gem_support/spec/spec_helper.rb +0 -103
  607. data/sub/eac_templates/Gemfile +0 -8
  608. data/sub/eac_templates/README.textile +0 -59
  609. data/sub/eac_templates/eac_templates.gemspec +0 -21
  610. data/sub/eac_templates/lib/eac_templates/abstract/directory.rb +0 -42
  611. data/sub/eac_templates/lib/eac_templates/abstract/file.rb +0 -25
  612. data/sub/eac_templates/lib/eac_templates/abstract/fs_object.rb +0 -99
  613. data/sub/eac_templates/lib/eac_templates/abstract/fs_object_by_pathname.rb +0 -13
  614. data/sub/eac_templates/lib/eac_templates/abstract/with_directory_file_methods.rb +0 -77
  615. data/sub/eac_templates/lib/eac_templates/core_ext.rb +0 -4
  616. data/sub/eac_templates/lib/eac_templates/errors/not_found.rb +0 -8
  617. data/sub/eac_templates/lib/eac_templates/errors/type_mismatch.rb +0 -8
  618. data/sub/eac_templates/lib/eac_templates/errors.rb +0 -9
  619. data/sub/eac_templates/lib/eac_templates/interface_methods.rb +0 -12
  620. data/sub/eac_templates/lib/eac_templates/modules/ancestor/directory.rb +0 -37
  621. data/sub/eac_templates/lib/eac_templates/modules/ancestor/file.rb +0 -64
  622. data/sub/eac_templates/lib/eac_templates/modules/ancestor/fs_object.rb +0 -26
  623. data/sub/eac_templates/lib/eac_templates/modules/ancestor.rb +0 -37
  624. data/sub/eac_templates/lib/eac_templates/modules/base/directory.rb +0 -72
  625. data/sub/eac_templates/lib/eac_templates/modules/base/file.rb +0 -31
  626. data/sub/eac_templates/lib/eac_templates/modules/base/fs_object.rb +0 -16
  627. data/sub/eac_templates/lib/eac_templates/modules/base.rb +0 -93
  628. data/sub/eac_templates/lib/eac_templates/modules.rb +0 -9
  629. data/sub/eac_templates/lib/eac_templates/patches/module/erb_template.rb +0 -9
  630. data/sub/eac_templates/lib/eac_templates/patches/module/template.rb +0 -9
  631. data/sub/eac_templates/lib/eac_templates/patches/module.rb +0 -4
  632. data/sub/eac_templates/lib/eac_templates/patches/object/erb_template.rb +0 -9
  633. data/sub/eac_templates/lib/eac_templates/patches/object/template.rb +0 -7
  634. data/sub/eac_templates/lib/eac_templates/patches/object.rb +0 -4
  635. data/sub/eac_templates/lib/eac_templates/patches.rb +0 -4
  636. data/sub/eac_templates/lib/eac_templates/sources/directory.rb +0 -37
  637. data/sub/eac_templates/lib/eac_templates/sources/file.rb +0 -13
  638. data/sub/eac_templates/lib/eac_templates/sources/from_all_gems.rb +0 -4
  639. data/sub/eac_templates/lib/eac_templates/sources/from_gem.rb +0 -37
  640. data/sub/eac_templates/lib/eac_templates/sources/fs_object.rb +0 -58
  641. data/sub/eac_templates/lib/eac_templates/sources/internal_set.rb +0 -27
  642. data/sub/eac_templates/lib/eac_templates/sources/set.rb +0 -61
  643. data/sub/eac_templates/lib/eac_templates/sources/single.rb +0 -34
  644. data/sub/eac_templates/lib/eac_templates/sources.rb +0 -9
  645. data/sub/eac_templates/lib/eac_templates/variables/content.rb +0 -52
  646. data/sub/eac_templates/lib/eac_templates/variables/directory.rb +0 -48
  647. data/sub/eac_templates/lib/eac_templates/variables/file.rb +0 -26
  648. data/sub/eac_templates/lib/eac_templates/variables/fs_object.rb +0 -65
  649. data/sub/eac_templates/lib/eac_templates/variables/not_found_error.rb +0 -7
  650. data/sub/eac_templates/lib/eac_templates/variables/providers/base.rb +0 -24
  651. data/sub/eac_templates/lib/eac_templates/variables/providers/config_reader.rb +0 -29
  652. data/sub/eac_templates/lib/eac_templates/variables/providers/entries_reader.rb +0 -25
  653. data/sub/eac_templates/lib/eac_templates/variables/providers/generic.rb +0 -25
  654. data/sub/eac_templates/lib/eac_templates/variables/providers/hash.rb +0 -29
  655. data/sub/eac_templates/lib/eac_templates/variables/providers.rb +0 -25
  656. data/sub/eac_templates/lib/eac_templates/variables.rb +0 -9
  657. data/sub/eac_templates/lib/eac_templates/version.rb +0 -5
  658. data/sub/eac_templates/lib/eac_templates.rb +0 -15
  659. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec.rb +0 -28
  660. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/a/a_a +0 -1
  661. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/a/a_b +0 -1
  662. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/b +0 -1
  663. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/c +0 -1
  664. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/a/a_d +0 -1
  665. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/c +0 -1
  666. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/d +0 -1
  667. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_a +0 -1
  668. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_b +0 -1
  669. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_c +0 -1
  670. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_d +0 -1
  671. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/b +0 -1
  672. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/c +0 -1
  673. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/d +0 -1
  674. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/a/a_a +0 -1
  675. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/a/a_b +0 -1
  676. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/b +0 -1
  677. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/c +0 -1
  678. data/sub/eac_templates/spec/lib/eac_templates/modules/base/child_spec.rb +0 -110
  679. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec.rb +0 -26
  680. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec_files/path/my_stub_with_template +0 -1
  681. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec.rb +0 -42
  682. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file1.template +0 -1
  683. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file2 +0 -1
  684. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path2/subdir1/file3.template +0 -1
  685. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec.rb +0 -35
  686. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/expected_content +0 -2
  687. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/source.template +0 -2
  688. data/sub/eac_templates/spec/rubocop_spec.rb +0 -3
  689. data/sub/eac_templates/spec/spec_helper/modules_resources_context.rb +0 -45
  690. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/a_module/a/a_a +0 -1
  691. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/a_module/b +0 -1
  692. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/prepended_module/a/a_d.template +0 -1
  693. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/sub_class/a/a_c +0 -1
  694. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/super_class/a/a_b +0 -1
  695. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/super_class/b +0 -1
  696. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/a/a_b +0 -1
  697. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/b +0 -1
  698. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/c +0 -1
  699. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/prepended_module/c +0 -1
  700. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/prepended_module/d.template +0 -1
  701. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/sub_class/a/a_d +0 -1
  702. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/sub_class/b +0 -1
  703. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/super_class/a/a_b +0 -1
  704. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/super_class/b +0 -1
  705. data/sub/eac_templates/spec/spec_helper.rb +0 -6
  706. /data/sub/{avm-eac_ruby_base1 → avm-eac_webapp_base0}/Gemfile +0 -0
  707. /data/sub/{avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem → avm-eac_webapp_base0}/spec/rubocop_spec.rb +0 -0
@@ -1,1903 +0,0 @@
1
- #!/usr/bin/env bash
2
- #
3
- #
4
- # Copyright 2013-2020 - Ingy döt Net <ingy@ingy.net>
5
- #
6
-
7
-
8
- # Exit on any errors:
9
- set -e
10
-
11
- export FILTER_BRANCH_SQUELCH_WARNING=1
12
-
13
- # Import Bash+ helper functions:
14
- SOURCE="$BASH_SOURCE"
15
- while [[ -h $SOURCE ]]; do
16
- DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
17
- SOURCE="$(readlink "$SOURCE")"
18
- [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
19
- done
20
- SOURCE_DIR="$(dirname "$SOURCE")"
21
-
22
- if [[ -z "$GIT_SUBREPO_ROOT" ]]; then
23
- # If `make install` installation used:
24
- source "${SOURCE_DIR}/git-subrepo.d/bash+.bash"
25
- else
26
- # If `source .rc` method used:
27
- source "${SOURCE_DIR}/../ext/bashplus/lib/bash+.bash"
28
- fi
29
- bash+:import :std can
30
-
31
- VERSION=0.4.1
32
- REQUIRED_GIT_VERSION=2.7.0
33
- GIT_TMP="$(git rev-parse --git-common-dir 2> /dev/null || echo .git)/tmp"
34
-
35
- # `git rev-parse` turns this into a getopt parser and a command usage message:
36
- GETOPT_SPEC="\
37
- git subrepo <command> <arguments> <options>
38
-
39
- Commands:
40
- clone Clone a remote repository into a local subdirectory
41
- init Turn a current subdirectory into a subrepo
42
- pull Pull upstream changes to the subrepo
43
- push Push local subrepo changes upstream
44
-
45
- fetch Fetch a subrepo's remote branch (and create a ref for it)
46
- branch Create a branch containing the local subrepo commits
47
- commit Commit a merged subrepo branch into the mainline
48
-
49
- status Get status of a subrepo (or all of them)
50
- clean Remove branches, remotes and refs for a subrepo
51
- config Set subrepo configuration properties
52
-
53
- help Documentation for git-subrepo (or specific command)
54
- version Display git-subrepo version info
55
- upgrade Upgrade the git-subrepo software itself
56
-
57
- See 'git help subrepo' for complete documentation and usage of each command.
58
-
59
- Options:
60
- --
61
- h Show the command summary
62
- help Help overview
63
- version Print the git-subrepo version number
64
-
65
- a,all Perform command on all current subrepos
66
- A,ALL Perform command on all subrepos and subsubrepos
67
- b,branch= Specify the upstream branch to push/pull/fetch
68
- e,edit Edit commit message
69
- f,force Force certain operations
70
- F,fetch Fetch the upstream content first
71
- M,method= Method when you join, valid options are 'merge' or 'rebase'
72
- Default is 'merge'
73
- m,message= Specify a commit message
74
- r,remote= Specify the upstream remote to push/pull/fetch
75
- s,squash Squash commits on push
76
- u,update Add the --branch and/or --remote overrides to .gitrepo
77
-
78
- q,quiet Show minimal output
79
- v,verbose Show verbose output
80
- d,debug Show the actual commands used
81
- x,DEBUG Turn on -x Bash debugging
82
- "
83
-
84
- #------------------------------------------------------------------------------
85
- # Top level function:
86
- #------------------------------------------------------------------------------
87
- main() {
88
- # Define global variables:
89
- local command= # Subrepo subcommand to run
90
- local command_arguments=() # Command args after getopt parsing
91
- local commit_msg_args=() # Arguments to show in the commit msg
92
- local subrepos=() # List of multiple subrepos
93
-
94
- local all_wanted=false # Apply command to all subrepos
95
- local ALL_wanted=false # Apply command to all subrepos and subsubrepos
96
- local force_wanted=false # Force certain operations
97
- local fetch_wanted=false # Fetch requested before a command
98
- local squash_wanted=false # Squash commits on push
99
- local update_wanted=false # Update .gitrepo with --branch and/or --remote
100
-
101
- local quiet_wanted=false # Output should be quiet
102
- local verbose_wanted=false # Output should be verbose
103
- local debug_wanted=false # Show debug messages
104
-
105
- local subdir= # Subdirectory of the subrepo being used
106
- local subref= # Valid git ref format of subdir
107
- local gitrepo= # Path to .gitrepo file
108
- local worktree= # Worktree created by 'git worktree'
109
- local start_pwd=$(pwd) # Store the original directory
110
-
111
- local original_head_commit= # HEAD commit id at start of command
112
- local original_head_branch= # HEAD ref at start of command
113
- local upstream_head_commit= # HEAD commit id from a subrepo fetch
114
-
115
- local subrepo_remote= # Remote url for subrepo's upstream repo
116
- local subrepo_branch= # Upstream branch to clone/push/pull
117
- local subrepo_commit= # Upstream HEAD from previous clone/pull
118
- local subrepo_parent= # Local commit from before previous clone/pull
119
- local subrepo_former= # A retired gitrepo key that might still exist
120
-
121
- local refs_subrepo_branch= # A subrepo ref -> commit of branch/pull command
122
- local refs_subrepo_commit= # A subrepo ref -> commit last merged
123
- local refs_subrepo_fetch= # A subrepo ref -> FETCH_HEAD after fetch
124
- local refs_subrepo_push= # A subrepo ref -> branch after push
125
-
126
- local override_remote= # Remote specified with -r
127
- local override_branch= # Remote specified with -b
128
-
129
- local edit_wanted=false # Edit commit message using -e
130
- local wanted_commit_message= # Custom commit message using -m
131
-
132
- local join_method= # Current join method (rebase/merge)
133
-
134
- local FAIL=true # Flag for RUN: fail on error
135
- local OUT=false # Flag for RUN: put output in $output
136
- local TTY=false # Flag for RUN: print output directly
137
- local SAY=true # Flag for RUN: print command for verbose
138
- local EXEC=false # Flag for RUN: run subprocess
139
- local OK=true # Flag that commands have succeeded
140
- local CODE=0 # Failure reason code
141
- local INDENT= # Verbose indentation
142
-
143
- local git_version= # Git version in use
144
-
145
- # Check environment and parse CLI options:
146
- assert-environment-ok
147
-
148
- # Parse and validate command options:
149
- get-command-options "$@"
150
-
151
- # Make sure repo is in the proper state:
152
- assert-repo-is-ready
153
-
154
- command-init
155
-
156
- if $all_wanted && [[ ! $command =~ ^(help|status)$ ]]; then
157
- # Run the command on all subrepos
158
- local args=( "${command_arguments[@]}" )
159
- get-all-subrepos
160
- for subdir in ${subrepos[*]}; do
161
- command-prepare
162
- subrepo_remote=
163
- subrepo_branch=
164
- command_arguments=( "$subdir" "${args[@]}" )
165
- "command:$command"
166
- done
167
- else
168
- # Run the command on a specific subrepo
169
- command-prepare
170
- "command:$command"
171
- fi
172
- }
173
-
174
- #------------------------------------------------------------------------------
175
- # API command functions.
176
- #
177
- # Most of these commands call a subrepo:$command function to do the actual
178
- # work. The user facing output (via `say`) is done up here. The
179
- # subrepo:* worker functions are meant to be called internally and don't print
180
- # info to the user.
181
- #------------------------------------------------------------------------------
182
-
183
- # `git subrepo clone <url> [<subdir>]` command:
184
- command:clone() {
185
- command-setup +subrepo_remote subdir:guess-subdir
186
-
187
- # Clone (or reclone) the subrepo into the subdir:
188
- local reclone_up_to_date=false
189
- subrepo:clone
190
- if "$reclone_up_to_date"; then
191
- say "Subrepo '$subdir' is up to date."
192
- return
193
- fi
194
-
195
- # Successful command output:
196
- local re=
197
- $force_wanted && re=re
198
- local remote="$subrepo_remote"
199
- say "Subrepo '$remote' ($subrepo_branch) ${re}cloned into '$subdir'."
200
- }
201
-
202
- # `git subrepo init <subdir>` command:
203
- command:init() {
204
- command-setup +subdir
205
- local remote="${subrepo_remote:=none}"
206
- local branch="${subrepo_branch:=master}"
207
-
208
- # Init new subrepo from the subdir:
209
- subrepo:init
210
- if OK; then
211
- if [[ $remote == none ]]; then
212
- say "Subrepo created from '$subdir' (with no remote)."
213
- else
214
- say "Subrepo created from '$subdir' with remote '$remote' ($branch)."
215
- fi
216
- else
217
- die "Unknown init error code: '$CODE'"
218
- fi
219
- return 0
220
- }
221
-
222
- # `git subrepo pull <subdir>` command:
223
- command:pull() {
224
- command-setup +subdir
225
-
226
- subrepo:pull
227
- if OK; then
228
- say "Subrepo '$subdir' pulled from '$subrepo_remote' ($subrepo_branch)."
229
- elif [[ $CODE -eq -1 ]]; then
230
- say "Subrepo '$subdir' is up to date."
231
- elif [[ $CODE -eq 1 ]]; then
232
- error-join
233
- return "$CODE"
234
- else
235
- die "Unknown pull error code: '$CODE'"
236
- fi
237
- return 0
238
- }
239
-
240
- # `git subrepo push <subdir>` command:
241
- command:push() {
242
- local branch=
243
- command-setup +subdir branch
244
-
245
- subrepo:push
246
- if OK; then
247
- say "Subrepo '$subdir' pushed to '$subrepo_remote' ($subrepo_branch)."
248
- elif [[ $CODE -eq -2 ]]; then
249
- say "Subrepo '$subdir' has no new commits to push."
250
- elif [[ $CODE -eq 1 ]]; then
251
- error-join
252
- return "$CODE"
253
- else
254
- die "Unknown push error code: '$CODE'"
255
- fi
256
- return 0
257
- }
258
-
259
- # `git subrepo fetch <subdir>` command
260
- command:fetch() {
261
- command-setup +subdir
262
- if [[ $subrepo_remote == "none" ]]; then
263
- say "Ignored '$subdir', no remote."
264
- else
265
- subrepo:fetch
266
- say "Fetched '$subdir' from '$subrepo_remote' ($subrepo_branch)."
267
- fi
268
- }
269
-
270
- # `git subrepo branch <subdir>` command:
271
- command:branch() {
272
- command-setup +subdir
273
- if $fetch_wanted; then
274
- CALL subrepo:fetch
275
- fi
276
-
277
- local branch="subrepo/$subref"
278
- if $force_wanted; then
279
- # We must make sure that the worktree is removed as well
280
- worktree="$GIT_TMP/$branch"
281
- git:delete-branch "$branch"
282
- fi
283
-
284
- if git:branch-exists "$branch"; then
285
- error "Branch '$branch' already exists. Use '--force' to override."
286
- fi
287
-
288
- # Create the subrepo branch:
289
- subrepo:branch
290
-
291
- say "Created branch '$branch' and worktree '$worktree'."
292
- }
293
-
294
- # `git subrepo commit <subdir>` command
295
- command:commit() {
296
- command-setup +subdir subrepo_commit_ref
297
-
298
- if "$fetch_wanted"; then
299
- CALL subrepo:fetch
300
- fi
301
- git:rev-exists "$refs_subrepo_fetch" ||
302
- error "Can't find ref '$refs_subrepo_fetch'. Try using -F."
303
- upstream_head_commit="$(git rev-parse "$refs_subrepo_fetch")"
304
-
305
- [[ -n $subrepo_commit_ref ]] ||
306
- subrepo_commit_ref="subrepo/$subref"
307
- subrepo:commit
308
-
309
- say "Subrepo commit '$subrepo_commit_ref' committed as"
310
- say "subdir '$subdir/' to branch '$original_head_branch'."
311
- }
312
-
313
- # `git subrepo status [<subdir>]` command:
314
- command:status() {
315
- subrepo:status | ${GIT_SUBREPO_PAGER}
316
- }
317
-
318
- status-refs() {
319
- local output=
320
- while read line; do
321
- [[ $line =~ ^([0-9a-f]+)\ refs/subrepo/$subref/([a-z]+) ]] || continue
322
- local sha1=; sha1="$(git rev-parse --short "${BASH_REMATCH[1]}")"
323
- local type="${BASH_REMATCH[2]}"
324
- local ref="refs/subrepo/$subref/$type"
325
- if [[ $type == branch ]]; then
326
- output+=" Branch Ref: $sha1 ($ref)"$'\n'
327
- elif [[ $type == commit ]]; then
328
- output+=" Commit Ref: $sha1 ($ref)"$'\n'
329
- elif [[ $type == fetch ]]; then
330
- output+=" Fetch Ref: $sha1 ($ref)"$'\n'
331
- elif [[ $type == pull ]]; then
332
- output+=" Pull Ref: $sha1 ($ref)"$'\n'
333
- elif [[ $type == push ]]; then
334
- output+=" Push Ref: $sha1 ($ref)"$'\n'
335
- fi
336
- done < <(git show-ref)
337
- if [[ -n $output ]]; then
338
- printf " Refs:\n$output"
339
- fi
340
- }
341
-
342
- # `git subrepo clean <subdir>` command
343
- command:clean() {
344
- command-setup +subdir
345
- local clean_list=()
346
- subrepo:clean
347
- for item in "${clean_list[@]}"; do
348
- say "Removed $item."
349
- done
350
- }
351
-
352
- # Wrap git config $gitrepo
353
- command:config() {
354
- command-setup +subdir +config_option config_value
355
- o "Update '$subdir' configuration with $config_option=$config_value"
356
-
357
- if [[ ! $config_option =~ ^(branch|cmdver|commit|method|remote|version)$ ]]; then
358
- error "Option $config_option not recognized"
359
- fi
360
-
361
- if [[ -z $config_value ]]; then
362
- OUT=true RUN git config --file="$gitrepo" "subrepo.$config_option"
363
- say "Subrepo '$subdir' option '$config_option' has value '$output'."
364
- return
365
- fi
366
-
367
- if ! $force_wanted; then
368
- # Only allow changing method without force
369
- if [[ ! $config_option == "method" ]]; then
370
- error "This option is autogenerated, use '--force' to override."
371
- fi
372
- fi
373
-
374
- if [[ $config_option == "method" ]]; then
375
- if [[ ! $config_value =~ ^(merge|rebase)$ ]]; then
376
- error "Not a valid method. Valid options are 'merge' or 'rebase'."
377
- fi
378
- fi
379
-
380
- RUN git config --file="$gitrepo" "subrepo.$config_option" "$config_value"
381
- say "Subrepo '$subdir' option '$config_option' set to '$config_value'."
382
- }
383
-
384
-
385
- # Launch the manpage viewer:
386
- command:help() {
387
- source "${SOURCE_DIR}/git-subrepo.d/help-functions.bash"
388
- local cmd="${command_arguments[0]}"
389
- if [[ -n $cmd ]]; then
390
- if can "help:$cmd"; then
391
- "help:$cmd"
392
- echo
393
- else
394
- err "No help found for '$cmd'"
395
- fi
396
- elif $all_wanted; then
397
- help:all
398
- else
399
- exec git help subrepo
400
- fi
401
- msg_ok=0
402
- }
403
-
404
- # Print version info.
405
- # TODO: Add short commit id after version.
406
- # Will need to get it from repo or make install can put it somewhere.
407
- command:version() {
408
- cat <<...
409
- git-subrepo Version: $VERSION
410
- Copyright 2013-2020 Ingy döt Net
411
- https://github.com/ingydotnet/git-subrepo
412
- $BASH_SOURCE
413
- Git Version: $git_version
414
-
415
- ...
416
- :
417
- }
418
-
419
- command:upgrade() {
420
- local path="$0"
421
- if [[ $path =~ ^/ && $path =~ ^(.*/git-subrepo)/lib/git-subrepo$ ]]; then
422
- local subrepo_root="${BASH_REMATCH[1]}"
423
- (
424
- o "Change directory to '$subrepo_root'."
425
- cd "${BASH_REMATCH[1]}"
426
-
427
- local branch="$(git rev-parse --abbrev-ref HEAD)"
428
- if [[ $branch != master ]]; then
429
- error "git-subrepo repo is not on the 'master' branch"
430
- fi
431
-
432
- o "'git pull' latest version."
433
- RUN git pull --ff-only
434
-
435
- say "git-subrepo is up to date."
436
- )
437
- else
438
- die "\
439
-
440
- Sorry. Your installation can't use the 'git subrepo upgrade' command. The
441
- command only works if you installed git subrepo by adding
442
- '/path/to/git-subrepo' to your PATH.
443
-
444
- If you used 'make install' to install git-subrepo, then just do this:
445
-
446
- cd /path/to/git-subrepo
447
- git pull
448
- make install
449
-
450
- "
451
- fi
452
- }
453
-
454
- #------------------------------------------------------------------------------
455
- # Subrepo command worker functions.
456
- #------------------------------------------------------------------------------
457
-
458
- # Clone by fetching remote content into our subdir:
459
- subrepo:clone() {
460
- re="$1"
461
-
462
- FAIL=false RUN git rev-parse HEAD
463
- if ! OK; then
464
- error "You can't clone into an empty repository"
465
- fi
466
-
467
- # Turn off force unless really a reclone:
468
- if $force_wanted && [[ ! -f $gitrepo ]]; then
469
- force_wanted=false
470
- fi
471
-
472
- if $force_wanted; then
473
- o "--force indicates a reclone."
474
- CALL subrepo:fetch
475
- read-gitrepo-file
476
- o "Check if we already are up to date."
477
- if [[ $upstream_head_commit == $subrepo_commit ]]; then
478
- reclone_up_to_date=true
479
- return
480
- fi
481
- o "Remove the old subdir."
482
- RUN git rm -r -- "$subdir"
483
- else
484
- assert-subdir-empty
485
- if [[ -z $subrepo_branch ]]; then
486
- o "Determine the upstream head branch."
487
- get-upstream-head-branch
488
- subrepo_branch="$output"
489
- fi
490
-
491
- CALL subrepo:fetch
492
- fi
493
-
494
- o "Make the directory '$subdir/' for the clone."
495
- RUN mkdir -p -- "$subdir"
496
-
497
- o "Commit the new '$subdir/' content."
498
- subrepo_commit_ref="$upstream_head_commit"
499
- CALL subrepo:commit
500
- }
501
-
502
- # Init a new subrepo from current repo:
503
- subrepo:init() {
504
- local branch_name="subrepo/${subref:??}"
505
- # Check if subdir is proper candidate for this init:
506
- assert-subdir-ready-for-init
507
-
508
- o "Put info into '$subdir/.gitrepo' file."
509
- update-gitrepo-file
510
-
511
- o "Add the new '$subdir/.gitrepo' file."
512
- # -f from pull request #219. TODO needs test.
513
- RUN git add -f -- "$gitrepo"
514
-
515
- o "Commit new subrepo to the '$original_head_branch' branch."
516
- subrepo_commit_ref="$original_head_commit"
517
- RUN git commit -m "$(get-commit-message)"
518
-
519
- o "Create ref '$refs_subrepo_commit'."
520
- git:make-ref "$refs_subrepo_commit" "$subrepo_commit_ref"
521
- }
522
-
523
- # Properly merge a local subrepo branch with upstream and commit to mainline:
524
- subrepo:pull() {
525
- CALL subrepo:fetch
526
-
527
- # Check if we already are up to date
528
- # If the -u flag is present, always perform the operation
529
- if [[ $upstream_head_commit == $subrepo_commit ]] && ! $update_wanted; then
530
- OK=false; CODE=-1; return
531
- fi
532
-
533
- local branch_name="subrepo/$subref"
534
- git:delete-branch "$branch_name"
535
-
536
- subrepo_commit_ref="$branch_name"
537
-
538
- o "Create subrepo branch '$branch_name'."
539
- CALL subrepo:branch
540
- cd "$worktree";
541
-
542
- if [[ "$join_method" == "rebase" ]]; then
543
- o "Rebase changes to $refs_subrepo_fetch"
544
- FAIL=false OUT=true RUN git rebase "$refs_subrepo_fetch" "$branch_name"
545
- if ! OK; then
546
- say "The \"git rebase\" command failed:"
547
- say
548
- say " ${output//$'\n'/$'\n' }"
549
- CODE=1
550
- return
551
- fi
552
- else
553
- o "Merge in changes from $refs_subrepo_fetch"
554
- FAIL=false RUN git merge "$refs_subrepo_fetch"
555
- if ! OK; then
556
- say "The \"git merge\" command failed:"
557
- say
558
- say " ${output//$'\n'/$'\n' }"
559
- CODE=1
560
- return
561
- fi
562
- fi
563
-
564
- o "Back to $start_pwd"
565
- cd "$start_pwd";
566
-
567
- o "Create ref '$refs_subrepo_branch' for branch '$branch_name'."
568
- git:make-ref "$refs_subrepo_branch" "$branch_name"
569
-
570
- o "Commit the new '$subrepo_commit_ref' content."
571
- CALL subrepo:commit
572
- }
573
-
574
- # Push a properly merged subrepo branch upstream:
575
- subrepo:push() {
576
- local branch_name="$branch"
577
- local new_upstream=false
578
- local branch_created=false
579
-
580
- if [[ -z $branch_name ]]; then
581
- FAIL=false OUT=false CALL subrepo:fetch
582
-
583
- if ! OK; then
584
- # Check if we are pushing to a new upstream repo (or branch) and just
585
- # push the commit directly. This is common after a `git subrepo init`:
586
- # Force to case in
587
- local re="(^|"$'\n'")fatal: couldn't find remote ref "
588
- if [[ ${output,,} =~ $re ]]; then
589
- o "Pushing to new upstream: $subrepo_remote ($subrepo_branch)."
590
- new_upstream=true
591
- else
592
- error "Fetch for push failed: $output"
593
- fi
594
- else
595
- # Check that we are up to date:
596
- o "Check upstream head against .gitrepo commit."
597
- if ! $force_wanted; then
598
- if [[ $upstream_head_commit != $subrepo_commit ]]; then
599
- error "There are new changes upstream, you need to pull first."
600
- fi
601
- fi
602
- fi
603
-
604
- branch_name="subrepo/$subref"
605
- git:delete-branch "$branch_name"
606
-
607
- if $squash_wanted; then
608
- o "Squash commits"
609
- subrepo_parent="HEAD^"
610
- fi
611
-
612
- o "Create subrepo branch '$branch_name'."
613
- CALL subrepo:branch "$branch_name"
614
- cd "$worktree";
615
-
616
- if [[ "$join_method" == "rebase" ]]; then
617
- o "Rebase changes to $refs_subrepo_fetch"
618
- FAIL=false OUT=true RUN git rebase "$refs_subrepo_fetch" "$branch_name"
619
- if ! OK; then
620
- say "The \"git rebase\" command failed:"
621
- say
622
- say " ${output//$'\n'/$'\n' }"
623
- CODE=1
624
- return
625
- fi
626
- fi
627
- branch_created=true
628
- cd "$start_pwd"
629
- else
630
- if $squash_wanted; then
631
- error "Squash option (-s) can't be used with branch parameter"
632
- fi
633
- fi
634
-
635
- o "Make sure that '$branch_name' exists."
636
- git:branch-exists "$branch_name" ||
637
- error "No subrepo branch '$branch_name' to push."
638
-
639
- o "Check if we have something to push"
640
- new_upstream_head_commit="$(git rev-parse "$branch_name")"
641
- if ! $new_upstream; then
642
- if [[ $upstream_head_commit == $new_upstream_head_commit ]]; then
643
- OK=false
644
- CODE=-2
645
- return
646
- fi
647
- fi
648
-
649
- if ! $force_wanted; then
650
- o "Make sure '$branch_name' contains the '$refs_subrepo_fetch' HEAD."
651
- if ! git:commit-in-rev-list "$upstream_head_commit" "$branch_name"; then
652
- error "Can't commit: '$branch_name' doesn't contain upstream HEAD: " \
653
- "$upstream_head_commit"
654
- fi
655
- fi
656
-
657
- local force=''
658
- "$force_wanted" && force=' --force'
659
-
660
- o "Push$force branch '$branch_name' to '$subrepo_remote' ($subrepo_branch)."
661
- RUN git push$force "$subrepo_remote" "$branch_name":"$subrepo_branch"
662
-
663
- o "Create ref '$refs_subrepo_push' for branch '$branch_name'."
664
- git:make-ref "$refs_subrepo_push" "$branch_name"
665
-
666
- if $branch_created; then
667
- o "Remove branch '$branch_name'."
668
- git:delete-branch "$branch_name"
669
- fi
670
-
671
- o "Put updates into '$subdir/.gitrepo' file."
672
- upstream_head_commit="$new_upstream_head_commit"
673
- subrepo_commit_ref="$upstream_head_commit"
674
- update-gitrepo-file
675
- RUN git commit -m "$(get-commit-message)"
676
- }
677
-
678
- # Fetch the subrepo's remote branch content:
679
- subrepo:fetch() {
680
- if [[ $subrepo_remote == none ]]; then
681
- error "Can't fetch subrepo. Remote is 'none' in '$subdir/.gitrepo'."
682
- fi
683
-
684
- o "Fetch the upstream: $subrepo_remote ($subrepo_branch)."
685
- RUN git fetch --no-tags --quiet "$subrepo_remote" "$subrepo_branch"
686
- OK || return
687
-
688
- o "Get the upstream subrepo HEAD commit."
689
- OUT=true RUN git rev-parse FETCH_HEAD^0
690
- upstream_head_commit="$output"
691
-
692
- o "Create ref '$refs_subrepo_fetch'."
693
- git:make-ref "$refs_subrepo_fetch" FETCH_HEAD^0
694
- }
695
-
696
- # Create a subrepo branch containing all changes
697
- subrepo:branch() {
698
- local branch="${1:-"subrepo/$subref"}"
699
- o "Check if the '$branch' branch already exists."
700
- git:branch-exists "$branch" && return
701
-
702
- local last_gitrepo_commit=
703
- local first_gitrepo_commit=
704
-
705
- o "Subrepo parent: $subrepo_parent"
706
- if [[ -n "$subrepo_parent" ]]; then
707
- local prev_commit=
708
- local ancestor=
709
- o "Create new commits with parents into the subrepo fetch"
710
- OUT=true RUN git rev-list --reverse --ancestry-path --topo-order "$subrepo_parent..HEAD"
711
- local commit_list="$output"
712
- for commit in $commit_list; do
713
- o "Working on $commit"
714
-
715
- FAIL=false OUT=true RUN git config --blob \
716
- "$commit":"$subdir/.gitrepo" "subrepo.commit"
717
- if [[ -z "$output" ]]; then
718
- o "Ignore commit, no .gitrepo file"
719
- continue
720
- fi
721
-
722
- local gitrepo_commit="$output"
723
- o ".gitrepo reference commit: $gitrepo_commit"
724
-
725
-
726
- # Only include the commit if it's a child of the previous commit
727
- # This way we create a single path between $subrepo_parent..HEAD
728
- if [[ -n "$ancestor" ]]; then
729
- local is_direct_child=$(git show -s --pretty=format:"%P" $commit | grep "$ancestor")
730
- o "is child: $is_direct_child"
731
- if [[ -z "$is_direct_child" ]]; then
732
- o "Ignore $commit, it's not in the selected path"
733
- continue
734
- fi
735
- fi
736
-
737
- # Remember the previous commit from the parent repo path
738
- ancestor="$commit"
739
-
740
- o "Check for rebase"
741
- if git:rev-exists "$refs_subrepo_fetch"; then
742
- if ! git:commit-in-rev-list "$gitrepo_commit" "$refs_subrepo_fetch"; then
743
- error "Local repository does not contain $gitrepo_commit. Try to 'git subrepo fetch $subref' or add the '-F' flag to always fetch the latest content."
744
- fi
745
- fi
746
-
747
- o "Find parents"
748
- local first_parent=
749
- [[ -n $prev_commit ]] && first_parent="-p $prev_commit"
750
- local second_parent=
751
- if [[ -z "$first_gitrepo_commit" ]]; then
752
- first_gitrepo_commit="$gitrepo_commit"
753
- second_parent="-p $gitrepo_commit"
754
- fi
755
-
756
- if [[ "$join_method" != "rebase" ]]; then
757
- # In the rebase case we don't create merge commits
758
- if [[ "$gitrepo_commit" != "$last_gitrepo_commit" ]]; then
759
- second_parent="-p $gitrepo_commit"
760
- last_gitrepo_commit="$gitrepo_commit"
761
- fi
762
- fi
763
-
764
- o "Create a new commit $first_parent $second_parent"
765
- FAIL=false RUN git cat-file -e "$commit":"$subdir"
766
- if OK; then
767
- o "Create with content"
768
- local PREVIOUS_IFS=$IFS
769
- IFS=$'\n'
770
- local author_info=( $(git log -1 --date=default --format=%ad%n%ae%n%an "$commit") )
771
- local commiter_info=( $(git log -1 --date=default --format=%cd%n%ce%n%cn "$commit") )
772
- IFS=$PREVIOUS_IFS
773
-
774
- # When we create new commits we leave the author information unchanged
775
- # the committer will though be updated to the current user
776
- # This should be analog how cherrypicking is handled allowing git
777
- # to store both the original author but also the responsible committer
778
- # that created the local version of the commit and pushed it.
779
- prev_commit=$(git log -n 1 --date=default --format=%B "$commit" |
780
- GIT_AUTHOR_DATE="${author_info[0]}" \
781
- GIT_AUTHOR_EMAIL="${author_info[1]}" \
782
- GIT_AUTHOR_NAME="${author_info[2]}" \
783
- GIT_COMMITTER_DATE="${commiter_info[0]}" \
784
- GIT_COMMITTER_EMAIL="${commiter_info[1]}" \
785
- GIT_COMMITTER_NAME="${commiter_info[2]}" \
786
- git commit-tree -F - $first_parent $second_parent "$commit":"$subdir")
787
- else
788
- o "Create empty placeholder"
789
- prev_commit=$(git commit-tree -m "EMPTY" \
790
- $first_parent $second_parent "4b825dc642cb6eb9a060e54bf8d69288fbee4904")
791
- fi
792
- done
793
-
794
- o "Create branch '$branch' for this new commit set $prev_commit."
795
- RUN git branch "$branch" "$prev_commit"
796
- else
797
- o "No parent setting, use the subdir content."
798
- RUN git branch "$branch" HEAD
799
- TTY=true FAIL=false RUN git filter-branch -f --subdirectory-filter \
800
- "$subref" "$branch"
801
- fi
802
-
803
- o "Remove the .gitrepo file from $first_gitrepo_commit..$branch"
804
- local filter="$branch"
805
- [[ -n "$first_gitrepo_commit" ]] && filter="$first_gitrepo_commit..$branch"
806
- FAIL=false RUN git filter-branch -f --prune-empty --tree-filter \
807
- "rm -f .gitrepo" "$filter"
808
-
809
- git:create-worktree "$branch"
810
-
811
- o "Create ref '$refs_subrepo_branch'."
812
- git:make-ref "$refs_subrepo_branch" "$branch"
813
- }
814
-
815
- # Commit a merged subrepo branch:
816
- subrepo:commit() {
817
- o "Check that '$subrepo_commit_ref' exists."
818
- git:rev-exists "$subrepo_commit_ref" ||
819
- error "Commit ref '$subrepo_commit_ref' does not exist."
820
-
821
- if ! "$force_wanted"; then
822
- local upstream="$upstream_head_commit"
823
- o "Make sure '$subrepo_commit_ref' contains the upstream HEAD."
824
- if ! git:commit-in-rev-list "$upstream" "$subrepo_commit_ref"; then
825
- error \
826
- "Can't commit: '$subrepo_commit_ref' doesn't contain upstream HEAD."
827
- fi
828
- fi
829
-
830
- if git ls-files -- "$subdir" | grep -q .; then
831
- o "Remove old content of the subdir."
832
- RUN git rm -r -- "$subdir"
833
- fi
834
-
835
- o "Put remote subrepo content into '$subdir/'."
836
- RUN git read-tree --prefix="$subdir" -u "$subrepo_commit_ref"
837
-
838
- o "Put info into '$subdir/.gitrepo' file."
839
- update-gitrepo-file
840
- RUN git add -f -- "$gitrepo"
841
-
842
- local commit_message
843
- if [[ -n "$wanted_commit_message" ]]; then
844
- commit_message="$wanted_commit_message"
845
- else
846
- commit_message="$(get-commit-message)"
847
- fi
848
-
849
- local edit_flag=
850
- $edit_wanted && edit_flag=--edit
851
-
852
- [[ -n $commit_message ]] || commit_message="$(get-commit-message)"
853
-
854
- local edit_flag=
855
- $edit_wanted && edit_flag=--edit
856
-
857
- o "Commit to the '$original_head_branch' branch."
858
- if [[ $original_head_commit != none ]]; then
859
- RUN git commit $edit_flag -m "$commit_message"
860
- else
861
- # We had cloned into an empty repo, side effect of prior git reset --mixed
862
- # command is that subrepo's history is now part of the index. Commit
863
- # without that history.
864
- OUT=true RUN git write-tree
865
- OUT=true RUN git commit-tree $edit_flag -m "$commit_message" "$output"
866
- RUN git reset --hard "$output"
867
- fi
868
-
869
- # Clean up worktree to indicate that we are ready
870
- git:remove-worktree
871
-
872
- o "Create ref '$refs_subrepo_commit'."
873
- git:make-ref "$refs_subrepo_commit" "$subrepo_commit_ref"
874
- }
875
-
876
- subrepo:status() {
877
- if [[ ${#command_arguments[@]} -eq 0 ]]; then
878
- get-all-subrepos
879
- local count=${#subrepos[@]}
880
- if ! "$quiet_wanted"; then
881
- if [[ $count -eq 0 ]]; then
882
- echo "No subrepos."
883
- return
884
- else
885
- local s=; [[ $count -eq 1 ]] || s=s
886
- echo "$count subrepo$s:"
887
- echo
888
- fi
889
- fi
890
- else
891
- subrepos=("${command_arguments[@]}")
892
- fi
893
-
894
- for subdir in "${subrepos[@]}"; do
895
- check-and-normalize-subdir
896
- encode-subdir
897
-
898
- if [[ ! -f $subdir/.gitrepo ]]; then
899
- echo "'$subdir' is not a subrepo"
900
- echo
901
- continue
902
- fi
903
-
904
- refs_subrepo_fetch="refs/subrepo/$subref/fetch"
905
- upstream_head_commit="$(
906
- git rev-parse --short "$refs_subrepo_fetch" 2> /dev/null || true
907
- )"
908
- subrepo_remote=
909
- subrepo_branch=
910
-
911
- read-gitrepo-file
912
- if $fetch_wanted; then
913
- subrepo:fetch
914
- fi
915
-
916
- if $quiet_wanted; then
917
- echo "$subdir"
918
- continue
919
- fi
920
-
921
- echo "Git subrepo '$subdir':"
922
- git:branch-exists "subrepo/$subref" &&
923
- echo " Subrepo Branch: subrepo/$subref"
924
- local remote="subrepo/$subref"
925
- FAIL=false OUT=true RUN git config "remote.$remote.url"
926
- [[ -n $output ]] &&
927
- echo " Remote Name: subrepo/$subref"
928
- echo " Remote URL: $subrepo_remote"
929
- [[ -n $upstream_head_commit ]] &&
930
- echo " Upstream Ref: $upstream_head_commit"
931
- echo " Tracking Branch: $subrepo_branch"
932
- [[ -z $subrepo_commit ]] ||
933
- echo " Pulled Commit: $(git rev-parse --short $subrepo_commit)"
934
- if [[ -n $subrepo_parent ]]; then
935
- echo " Pull Parent: $(git rev-parse --short $subrepo_parent)"
936
- # TODO Remove this eventually:
937
- elif [[ -n $subrepo_former ]]; then
938
- printf " Former Commit: $(git rev-parse --short $subrepo_former)"
939
- echo " *** DEPRECATED ***"
940
- fi
941
-
942
- # Grep for directory, branch can be in detached state due to conflicts
943
- local _worktree=$(git worktree list | grep "$GIT_TMP/subrepo/$subdir")
944
- if [[ -n $_worktree ]]; then
945
- echo " Worktree: $_worktree"
946
- fi
947
-
948
- if "$verbose_wanted"; then
949
- status-refs
950
- fi
951
-
952
- echo
953
- done
954
- }
955
-
956
- subrepo:clean() {
957
- # Remove subrepo branches if exist:
958
- local branch="subrepo/$subref"
959
- local ref="refs/heads/$branch"
960
- local worktree="$GIT_TMP/$branch"
961
-
962
- o "Clean $subdir"
963
- git:remove-worktree
964
- if git:branch-exists "$branch"; then
965
- o "Remove branch '$branch'."
966
- RUN git update-ref -d "$ref"
967
- clean_list+=("branch '$branch'")
968
- fi
969
-
970
- if "$force_wanted"; then
971
- o "Remove all subrepo refs."
972
- local suffix=""
973
- if ! $all_wanted; then
974
- suffix="$subref/"
975
- fi
976
- git show-ref | while read hash ref; do
977
- if [[ "$ref" == refs/subrepo/$suffix* ]]; then
978
- git update-ref -d "$ref"
979
- fi
980
- done
981
- fi
982
- }
983
-
984
- #------------------------------------------------------------------------------
985
- # Support functions:
986
- #------------------------------------------------------------------------------
987
-
988
-
989
- # TODO:
990
- # Collect original options and arguments into an array for commit message
991
- # They should be normalized and pruned
992
-
993
- # Parse command line options:
994
- get-command-options() {
995
- [[ $# -eq 0 ]] && set -- --help
996
-
997
- [[ -n $GIT_SUBREPO_QUIET ]] && quiet_wanted=true
998
- [[ -n $GIT_SUBREPO_VERBOSE ]] && verbose_wanted=true
999
- [[ -n $GIT_SUBREPO_DEBUG ]] && debug_wanted=true
1000
-
1001
- eval "$(
1002
- echo "$GETOPT_SPEC" |
1003
- git rev-parse --parseopt -- "$@" ||
1004
- echo exit $?
1005
- )"
1006
-
1007
- while [[ $# -gt 0 ]]; do
1008
- local option="$1"; shift
1009
- case "$option" in
1010
- --) break ;;
1011
- -a) all_wanted=true ;;
1012
- -A) ALL_wanted=true
1013
- all_wanted=true ;;
1014
- -b) subrepo_branch="$1"
1015
- override_branch="$1"
1016
- commit_msg_args+=("--branch=$1")
1017
- shift ;;
1018
- -e) edit_wanted=true ;;
1019
- -f) force_wanted=true
1020
- commit_msg_args+=("--force") ;;
1021
- -F) fetch_wanted=true ;;
1022
- -m) wanted_commit_message="$1"
1023
- shift;;
1024
- -M) join_method="$1"
1025
- shift;;
1026
- -M) join_method="$1"
1027
- shift;;
1028
- -r) subrepo_remote="$1"
1029
- override_remote="$1"
1030
- commit_msg_args+=("--remote=$1")
1031
- shift ;;
1032
- -s) squash_wanted=true ;;
1033
- -u) update_wanted=true
1034
- commit_msg_args+=("--update") ;;
1035
- -q) quiet_wanted=true ;;
1036
- -v) verbose_wanted=true ;;
1037
- -d) debug_wanted=true ;;
1038
- -x) set -x ;;
1039
- --version)
1040
- echo "$VERSION"
1041
- exit ;;
1042
- *) usage-error "Unexpected option: '$option'." ;;
1043
- esac
1044
- done
1045
-
1046
- # Set subrepo command:
1047
- command="$1"; shift
1048
-
1049
- # Make sure command exists:
1050
- can "command:$command" ||
1051
- usage-error "'$command' is not a command. See 'git subrepo help'."
1052
-
1053
- command_arguments=("$@")
1054
- if [[ ${#command_arguments} -gt 0 ]]; then
1055
- local first="${command_arguments[0]}"
1056
- first="${first%/}"
1057
- command_arguments[0]="$first"
1058
- fi
1059
- commit_msg_args+=("${command_arguments[@]}")
1060
-
1061
- for option in all ALL edit fetch force squash; do
1062
- var="${option}_wanted"
1063
- if ${!var}; then
1064
- check_option $option
1065
- fi
1066
- done
1067
-
1068
- if [[ -n $override_branch ]]; then
1069
- check_option branch
1070
- fi
1071
- if [[ -n $override_remote ]]; then
1072
- check_option remote
1073
- fi
1074
- if [[ -n $wanted_commit_message ]]; then
1075
- check_option message
1076
- fi
1077
- if $update_wanted; then
1078
- check_option update
1079
- if [[ -z $subrepo_branch && -z $subrepo_remote ]]; then
1080
- usage-error "Can't use '--update' without '--branch' or '--remote'."
1081
- fi
1082
- fi
1083
- }
1084
-
1085
- options_help='all'
1086
- options_branch='all fetch force'
1087
- options_clean='ALL all force'
1088
- options_clone='branch edit force message method'
1089
- options_config='force'
1090
- options_commit='edit fetch force message'
1091
- options_fetch='all branch remote'
1092
- options_init='branch remote method'
1093
- options_pull='all branch edit force message remote update'
1094
- options_push='all branch force remote squash update'
1095
- options_status='ALL all fetch'
1096
- check_option() {
1097
- local var="options_${command//-/_}"
1098
- [[ ${!var} =~ $1 ]] ||
1099
- usage-error "Invalid option '--$1' for '$command'."
1100
- }
1101
-
1102
- #------------------------------------------------------------------------------
1103
- # Command argument validation:
1104
- #------------------------------------------------------------------------------
1105
-
1106
- command-init() {
1107
- # Export variable to let other processes (possibly git hooks) know that they
1108
- # are running under git-subrepo. Set to current process pid, so it can be
1109
- # further verified if need be:
1110
- export GIT_SUBREPO_RUNNING="$$"
1111
- export GIT_SUBREPO_COMMAND="$command"
1112
-
1113
- : "${GIT_SUBREPO_PAGER:=${PAGER:-less}}"
1114
- if [[ $GIT_SUBREPO_PAGER == less ]]; then
1115
- GIT_SUBREPO_PAGER='less -FRX'
1116
- fi
1117
- }
1118
-
1119
- command-prepare() {
1120
- local output=
1121
- if git:rev-exists HEAD; then
1122
- git:get-head-branch-commit
1123
- fi
1124
- original_head_commit="${output:-none}"
1125
- }
1126
-
1127
- # Do the setup steps needed by most of the subrepo subcommands:
1128
- command-setup() {
1129
- get-params "$@"
1130
-
1131
- check-and-normalize-subdir
1132
- encode-subdir
1133
- gitrepo="$subdir/.gitrepo"
1134
-
1135
- if ! $force_wanted; then
1136
- o "Check for worktree with branch subrepo/$subdir"
1137
- local _worktree=$(git worktree list | grep "\[subrepo/$subdir\]" | cut -d ' ' -f1)
1138
- if [[ $command =~ ^(commit)$ && -z $_worktree ]]; then
1139
- error "There is no worktree available, use the branch command first"
1140
- elif [[ ! $command =~ ^(branch|clean|commit|push)$ && -n $_worktree ]]; then
1141
- if [[ -e $gitrepo ]]; then
1142
- error "There is already a worktree with branch subrepo/$subdir.
1143
- Use the --force flag to override this check or perform a subrepo clean
1144
- to remove the worktree."
1145
- else
1146
- error "There is already a worktree with branch subrepo/$subdir.
1147
- Use the --force flag to override this check or remove the worktree with
1148
- 1. rm -rf $_worktree
1149
- 2. git worktree prune
1150
- "
1151
- fi
1152
- fi
1153
- fi
1154
-
1155
- # Set refs_ variables:
1156
- refs_subrepo_branch="refs/subrepo/$subref/branch"
1157
- refs_subrepo_commit="refs/subrepo/$subref/commit"
1158
- refs_subrepo_fetch="refs/subrepo/$subref/fetch"
1159
- refs_subrepo_push="refs/subrepo/$subref/push"
1160
-
1161
- # Read/parse the .gitrepo file (unless clone/init; doesn't exist yet)
1162
- if [[ ! $command =~ ^(clone|init)$ ]]; then
1163
- read-gitrepo-file
1164
- fi
1165
-
1166
- true
1167
- }
1168
-
1169
- # Parse command line args according to a simple dsl spec:
1170
- get-params() {
1171
- local i=0
1172
- local num=${#command_arguments[@]}
1173
- for arg in $@; do
1174
- local value="${command_arguments[i]}"
1175
- value="${value//%/%%}"
1176
- value="${value//\\/\\\\}"
1177
- # If arg starts with '+' then it is required
1178
- if [[ $arg == +* ]]; then
1179
- if [[ $i -ge $num ]]; then
1180
- usage-error "Command '$command' requires arg '${arg#+}'."
1181
- fi
1182
- printf -v ${arg#+} -- "$value"
1183
- # Look for function name after ':' to provide a default value
1184
- else
1185
- if [[ $i -lt $num ]]; then
1186
- printf -v ${arg%:*} -- "$value"
1187
- elif [[ $arg =~ : ]]; then
1188
- "${arg#*:}"
1189
- fi
1190
- fi
1191
- let i=$((i+1))
1192
- done
1193
-
1194
- # Check for extra arguments:
1195
- if [[ $num -gt $i ]]; then
1196
- set -- ${command_arguments[@]}
1197
- for ((j = 1; j <= i; j++)); do shift; done
1198
- error "Unknown argument(s) '$*' for '$command' command."
1199
- fi
1200
- }
1201
-
1202
- check-and-normalize-subdir() {
1203
- # Sanity check subdir:
1204
- [[ -n $subdir ]] ||
1205
- die "subdir not set"
1206
- [[ $subdir =~ ^/ || $subdir =~ ^[A-Z]: ]] &&
1207
- usage-error "The subdir '$subdir' should not be absolute path."
1208
- subdir="${subdir#./}"
1209
- subdir="${subdir%/}"
1210
- [[ $subdir != *//* ]] || subdir=$(tr -s / <<< "$subdir")
1211
- }
1212
-
1213
- # Determine the correct subdir path to use:
1214
- guess-subdir() {
1215
- local dir="$subrepo_remote"
1216
- dir="${dir%.git}"
1217
- dir="${dir%/}"
1218
- dir="${dir##*/}"
1219
- [[ $dir =~ ^[-_a-zA-Z0-9]+$ ]] ||
1220
- error "Can't determine subdir from '$subrepo_remote'."
1221
- subdir="$dir"
1222
- check-and-normalize-subdir
1223
- encode-subdir
1224
- }
1225
-
1226
- # Encode the subdir as a valid git ref format
1227
- #
1228
- # Input: env $subdir
1229
- # Output: env $subref
1230
- #
1231
- # For detail rules about valid git refs, see the manual of git-check-ref-format:
1232
- # URL: https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
1233
- # Shell: git check-ref-format --help
1234
- #
1235
- encode-subdir() {
1236
- subref=$subdir
1237
- if [[ ! $subref ]] || git check-ref-format "subrepo/$subref"; then
1238
- return
1239
- fi
1240
-
1241
- ## 0. escape %, ensure the subref can be (almost) decoded back to subdir
1242
- subref=${subref//%/%25}
1243
-
1244
- ## 1. They can include slash / for hierarchical (directory) grouping,
1245
- ## but no slash-separated component can begin with a dot . or
1246
- ## end with the sequence .lock.
1247
- subref=/$subref/
1248
- subref=${subref//\/.//%2e}
1249
- subref=${subref//.lock\//%2elock/}
1250
- subref=${subref#/}
1251
- subref=${subref%/}
1252
-
1253
- ## 2. They must contain at least one /.
1254
- ## Note: 'subrepo/' be will prefixed, so this is always true.
1255
- ## 3. They cannot have two consecutive dots .. anywhere.
1256
- subref=${subref//../%2e%2e}
1257
- subref=${subref//%2e./%2e%2e}
1258
- subref=${subref//.%2e/%2e%2e}
1259
-
1260
- ## 4. They cannot have ASCII control characters
1261
- ## (i.e. bytes whose values are lower than \040, or \177 DEL), space,
1262
- ## tilde ~, caret ^, or colon : anywhere.
1263
- ## 5. They cannot have question-mark ?, asterisk *,
1264
- ## or open bracket [ anywhere.
1265
- local i
1266
- for (( i = 1; i < 32; ++i )); do
1267
- # skip substitute NUL char (i=0), as bash will skip NUL in env
1268
- local x=$(printf "%02x" $i)
1269
- subref=${subref//$(printf "%b" "\x$x")/%$x}
1270
- done
1271
- subref=${subref//$'\177'/%7f}
1272
- subref=${subref// /%20}
1273
- subref=${subref//\~/%7e}
1274
- subref=${subref//^/%5e}
1275
- subref=${subref//:/%3a}
1276
- subref=${subref//\?/%3f}
1277
- subref=${subref//\*/%2a}
1278
- subref=${subref//\[/%5b}
1279
- subref=${subref//$'\n'/%0a}
1280
-
1281
- ## 6. They cannot begin or end with a slash / or contain multiple
1282
- ## consecutive slashes.
1283
- ## Note: This rule is not revertable.
1284
- [[ $subref != *//* ]] || subref=$(tr -s / <<< "$subref")
1285
-
1286
- ## 7. They cannot end with a dot ..
1287
- case "$subref" in
1288
- *.) subref=${subref%.}
1289
- subref+=%2e
1290
- ;;
1291
- esac
1292
-
1293
- ## 8. They cannot contain a sequence @\{.
1294
- subref=${subref//@\{/%40\{}
1295
-
1296
- ## 9. They cannot be the single character @.
1297
- ## Note: 'subrepo/' be will prefixed, so this is always true.
1298
-
1299
- ## 10. They cannot contain a \.
1300
- subref=${subref//\\/%5c}
1301
-
1302
- subref=$(git check-ref-format --normalize --allow-onelevel "$subref") ||
1303
- error "Can't determine valid subref from '$subdir'."
1304
- }
1305
-
1306
- #------------------------------------------------------------------------------
1307
- # State file (`.gitrepo`) functions:
1308
- #------------------------------------------------------------------------------
1309
-
1310
- # Set subdir and gitrepo vars:
1311
- read-gitrepo-file() {
1312
- gitrepo="$subdir/.gitrepo"
1313
-
1314
- if [[ ! -f $gitrepo ]]; then
1315
- error "No '$gitrepo' file."
1316
- fi
1317
-
1318
- # Read .gitrepo values:
1319
- if [[ -z $subrepo_remote ]]; then
1320
- SAY=false OUT=true RUN git config --file="$gitrepo" subrepo.remote
1321
- subrepo_remote="$output"
1322
- fi
1323
-
1324
- if [[ -z $subrepo_branch ]]; then
1325
- SAY=false OUT=true RUN git config --file="$gitrepo" subrepo.branch
1326
- subrepo_branch="$output"
1327
- fi
1328
-
1329
- SAY=false OUT=true RUN git config --file="$gitrepo" subrepo.commit
1330
- subrepo_commit="$output"
1331
-
1332
- FAIL=false \
1333
- SAY=false OUT=true RUN git config --file="$gitrepo" subrepo.parent
1334
- subrepo_parent="$output"
1335
-
1336
- FAIL=false \
1337
- SAY=false OUT=true RUN git config --file="$gitrepo" subrepo.method
1338
- if [[ $output == "rebase" ]]; then
1339
- join_method="rebase"
1340
- else
1341
- # This is the default method
1342
- join_method="merge"
1343
- fi
1344
-
1345
- if [[ -z $subrepo_parent ]]; then
1346
- FAIL=false \
1347
- SAY=false OUT=true RUN git config --file="$gitrepo" subrepo.former
1348
- subrepo_former="$output"
1349
- fi
1350
- }
1351
-
1352
-
1353
- # Update the subdir/.gitrepo state file:
1354
- update-gitrepo-file() {
1355
- local short_commit=
1356
-
1357
- local newfile=false
1358
- if [[ ! -e $gitrepo ]]; then
1359
-
1360
- FAIL=false RUN git cat-file -e "$original_head_commit":"$gitrepo"
1361
-
1362
- if OK; then
1363
- o "Try to recreate gitrepo file from $original_head_commit"
1364
- git cat-file -p "$original_head_commit":"$gitrepo" > "$gitrepo"
1365
- else
1366
- newfile=true
1367
- cat <<... > "$gitrepo"
1368
- ; DO NOT EDIT (unless you know what you are doing)
1369
- ;
1370
- ; This subdirectory is a git "subrepo", and this file is maintained by the
1371
- ; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
1372
- ;
1373
- ...
1374
- fi
1375
- fi
1376
-
1377
-
1378
- # TODO: only update remote and branch if supplied and $update_wanted
1379
- if $newfile || [[ $update_wanted && -n $override_remote ]]; then
1380
- RUN git config --file="$gitrepo" subrepo.remote "$subrepo_remote"
1381
- fi
1382
-
1383
- if $newfile || [[ $update_wanted && -n $override_branch ]]; then
1384
- RUN git config --file="$gitrepo" subrepo.branch "$subrepo_branch"
1385
- fi
1386
-
1387
- RUN git config --file="$gitrepo" subrepo.commit "$upstream_head_commit"
1388
- # Only write new parent when we are at the head of upstream
1389
- if [[ -n $upstream_head_commit && -n $subrepo_commit_ref ]]; then
1390
- OUT=true RUN git rev-parse "$subrepo_commit_ref"
1391
- o "$upstream_head_commit == $output"
1392
- if [[ $upstream_head_commit == $output ]]; then
1393
- RUN git config --file="$gitrepo" subrepo.parent "$original_head_commit"
1394
- fi
1395
- fi
1396
-
1397
- [[ -z $join_method ]] && join_method="merge"
1398
- RUN git config --file="$gitrepo" subrepo.method "$join_method"
1399
-
1400
- RUN git config --file="$gitrepo" subrepo.cmdver "$VERSION"
1401
-
1402
- RUN git add -f -- "$gitrepo"
1403
- }
1404
-
1405
- #------------------------------------------------------------------------------
1406
- # Enviroment checks:
1407
- #------------------------------------------------------------------------------
1408
-
1409
- # Check that system is ok for this command:
1410
- assert-environment-ok() {
1411
- type git &> /dev/null ||
1412
- error "Can't find your 'git' command in '$PATH'."
1413
-
1414
- git_version=$(git --version | cut -d ' ' -f3)
1415
-
1416
- if [[ $(
1417
- printf "$REQUIRED_GIT_VERSION\n$git_version" |
1418
- sort -t. -k 1,1n -k 2,2n -k 3,3n |
1419
- head -n1
1420
- ) == "$git_version" &&
1421
- $git_version != "$REQUIRED_GIT_VERSION"
1422
- ]]; then
1423
- error "Requires git version $REQUIRED_GIT_VERSION or higher; "`
1424
- `"you have '$git_version'."
1425
- fi
1426
-
1427
- if [[ ${BASH_VERSINFO[0]} -lt 4 ]] ; then
1428
- echo "The git-subrepo command requires that 'Bash 4+' is installed."
1429
- echo "It doesn't need to be your shell, but it must be in your PATH."
1430
- if [[ $OSTYPE == darwin* ]]; then
1431
- echo "You appear to be on macOS."
1432
- echo "Try: 'brew install bash'."
1433
- echo "This will not change your user shell, it just installs 'Bash 5.x'."
1434
- fi
1435
- exit 1
1436
- fi
1437
- }
1438
-
1439
- # Make sure git repo is ready:
1440
- assert-repo-is-ready() {
1441
- # Skip this for trivial info commands:
1442
- [[ $command =~ ^(help|version|upgrade)$ ]] && return
1443
-
1444
- # We must be inside a git repo:
1445
- git rev-parse --git-dir &> /dev/null ||
1446
- error "Not inside a git repository."
1447
-
1448
- # Get the original branch and commit:
1449
- git:get-head-branch-name
1450
- original_head_branch="$output"
1451
-
1452
- # If a subrepo branch is currently checked out, then note it:
1453
- if [[ $original_head_branch =~ ^subrepo/(.*) ]]; then
1454
- error "Can't '$command' while subrepo branch is checked out."
1455
- fi
1456
-
1457
- # Make sure we are on a branch:
1458
- [[ $original_head_branch == HEAD || -z $original_head_branch ]] &&
1459
- error "Must be on a branch to run this command."
1460
-
1461
- # In a work-tree:
1462
- SAY=false OUT=true RUN git rev-parse --is-inside-work-tree
1463
- [[ $output == true ]] ||
1464
- error "Can't 'subrepo $command' outside a working tree."
1465
-
1466
- # HEAD exists:
1467
- [[ $command == clone ]] ||
1468
- RUN git rev-parse --verify HEAD
1469
-
1470
- assert-working-copy-is-clean
1471
-
1472
- # For now, only support actions from top of repo:
1473
- if [[ -n "$(git rev-parse --show-prefix)" ]]; then
1474
- error "Need to run subrepo command from top level directory of the repo."
1475
- fi
1476
- }
1477
-
1478
- assert-working-copy-is-clean() {
1479
- # Repo is in a clean state:
1480
- if [[ $command =~ ^(clone|init|pull|push|branch|commit)$ ]]; then
1481
- # TODO: Should we check for untracked files?
1482
- local pwd=$(pwd)
1483
- o "Assert that working copy is clean: $pwd"
1484
- git update-index -q --ignore-submodules --refresh
1485
- git diff-files --quiet --ignore-submodules ||
1486
- error "Can't $command subrepo. Unstaged changes. ($pwd)"
1487
- if [[ $command != clone ]] || git:rev-exists HEAD; then
1488
- git diff-index --quiet --ignore-submodules HEAD ||
1489
- error "Can't $command subrepo. Working tree has changes. ($pwd)"
1490
- git diff-index --quiet --cached --ignore-submodules HEAD ||
1491
- error "Can't $command subrepo. Index has changes. ($pwd)"
1492
- else
1493
- # Repo has no commits and we're cloning a subrepo. Working tree won't
1494
- # possibly have changes as there was nothing initial to change.
1495
- [[ -z $(git ls-files) ]] ||
1496
- error "Can't $command subrepo. Index has changes. ($pwd)"
1497
- fi
1498
- fi
1499
- }
1500
-
1501
- # If subdir exists, make sure it is empty:
1502
- assert-subdir-ready-for-init() {
1503
- if [[ ! -e $subdir ]]; then
1504
- error "The subdir '$subdir' does not exist."
1505
- fi
1506
- if [[ -e $subdir/.gitrepo ]]; then
1507
- error "The subdir '$subdir' is already a subrepo."
1508
- fi
1509
- # Check that subdir is part of the repo
1510
- if [[ -z $(git log -1 --date=default -- $subdir) ]]; then
1511
- error "The subdir '$subdir' is not part of this repo."
1512
- fi
1513
- }
1514
-
1515
- # If subdir exists, make sure it is empty:
1516
- assert-subdir-empty() {
1517
- if [[ -e $subdir ]] && [[ -n $(ls -A $subdir) ]]; then
1518
- error "The subdir '$subdir' exists and is not empty."
1519
- fi
1520
- }
1521
-
1522
- #------------------------------------------------------------------------------
1523
- # Getters of various information:
1524
- #------------------------------------------------------------------------------
1525
-
1526
- # Find all the current subrepos by looking for all the subdirectories that
1527
- # contain a `.gitrepo` file.
1528
- get-all-subrepos() {
1529
- local paths=($(git ls-files | sed -n 's!/\.gitrepo$!!p' | sort))
1530
- subrepos=()
1531
- local path
1532
- for path in "${paths[@]}"; do
1533
- add-subrepo "$path"
1534
- done
1535
- }
1536
-
1537
- add-subrepo() {
1538
- if ! $ALL_wanted; then
1539
- for path in "${subrepos[@]}"; do
1540
- [[ $1/ =~ ^$path/ ]] && return
1541
- done
1542
- fi
1543
- subrepos+=("$1")
1544
- }
1545
-
1546
- # Determine the upstream's default head branch:
1547
- get-upstream-head-branch() {
1548
- OUT=true RUN git ls-remote $subrepo_remote
1549
- local remotes="$output"
1550
- [[ -n $remotes ]] ||
1551
- error "Failed to 'git ls-remote $subrepo_remote'."
1552
- local commit="$(
1553
- echo "$remotes" |
1554
- grep HEAD |
1555
- cut -f1
1556
- )"
1557
- local branch="$(
1558
- echo "$remotes" |
1559
- grep -E "$commit[[:space:]]+refs/heads/" |
1560
- grep -v HEAD |
1561
- head -n1 |
1562
- cut -f2
1563
- )"
1564
- [[ $branch =~ refs/heads/ ]] ||
1565
- error "Problem finding remote default head branch."
1566
- output="${branch#refs/heads/}"
1567
- }
1568
-
1569
- # Commit msg for an action commit:
1570
- # Don't use RUN here as it will pollute commit message
1571
- get-commit-message() {
1572
- local commit="none"
1573
- if git:rev-exists "$upstream_head_commit"; then
1574
- commit=$(git rev-parse --short "$upstream_head_commit")
1575
- fi
1576
-
1577
- local args=() debug_wanted=false
1578
- if $all_wanted; then
1579
- args+=("$subdir")
1580
- fi
1581
- args+=(${commit_msg_args[@]})
1582
-
1583
- # Find the specific git-subrepo code used:
1584
- local command_remote='???'
1585
- local command_commit='???'
1586
- get-command-info
1587
-
1588
- local merged="none"
1589
- if git:rev-exists "$subrepo_commit_ref"; then
1590
- merged=$(git rev-parse --short "$subrepo_commit_ref")
1591
- fi
1592
-
1593
- local is_merge=""
1594
- if [[ $command != push ]]; then
1595
- if git:is_merge_commit "$subrepo_commit_ref"; then
1596
- is_merge=" (merge)"
1597
- fi
1598
- fi
1599
-
1600
- # TODO: Consider output for push!
1601
-
1602
- # Format subrepo commit message:
1603
- cat <<...
1604
- git subrepo $command$is_merge ${args[@]}
1605
-
1606
- subrepo:
1607
- subdir: "$subdir"
1608
- merged: "$merged"
1609
- upstream:
1610
- origin: "$subrepo_remote"
1611
- branch: "$subrepo_branch"
1612
- commit: "$commit"
1613
- git-subrepo:
1614
- version: "$VERSION"
1615
- origin: "$command_remote"
1616
- commit: "$command_commit"
1617
- ...
1618
- }
1619
-
1620
- # Get location and version info about the git-subrepo command itself. This
1621
- # info goes into commit messages, so we can find out exactly how the commits
1622
- # were done.
1623
- get-command-info() {
1624
- local bin="$0"
1625
- if [[ $bin =~ / ]]; then
1626
- local lib="$(dirname "$bin")"
1627
- # XXX Makefile needs to install these symlinks:
1628
- # If `git-subrepo` was system-installed (`make install`):
1629
- if [[ -e $lib/git-subrepo.d/upstream ]] &&
1630
- [[ -e $lib/git-subrepo.d/commit ]]; then
1631
- command_remote=$(readlink "$lib/git-subrepo.d/upstream")
1632
- command_commit=$(readlink "$lib/git-subrepo.d/commit")
1633
- elif [[ $lib =~ / ]]; then
1634
- lib="$(dirname "$lib")"
1635
- if [[ -d $lib/.git ]]; then
1636
- local remote="$(
1637
- GIT_DIR=$lib/.git git remote -v |
1638
- grep '^origin' |
1639
- head -n1 |
1640
- cut -f2 |
1641
- cut -d ' ' -f1
1642
- )"
1643
- if [[ -n $remote ]]; then
1644
- command_remote="$remote"
1645
- else
1646
- local remote="$(
1647
- GIT_DIR=$lib/.git git remote -v |
1648
- head -n1 |
1649
- cut -f2 |
1650
- cut -d ' ' -f1
1651
- )"
1652
- if [[ -n $remote ]]; then
1653
- command_remote="$remote"
1654
- fi
1655
- fi
1656
- local commit="$(GIT_DIR="$lib/.git" git rev-parse --short HEAD)"
1657
- if [[ -n $commit ]]; then
1658
- command_commit="$commit"
1659
- fi
1660
- fi
1661
- fi
1662
- fi
1663
- }
1664
-
1665
- #------------------------------------------------------------------------------
1666
- # Instructional errors:
1667
- #------------------------------------------------------------------------------
1668
-
1669
- error-join() {
1670
- cat <<...
1671
-
1672
- You will need to finish the $command by hand. A new working tree has been
1673
- created at $worktree so that you can resolve the conflicts
1674
- shown in the output above.
1675
-
1676
- This is the common conflict resolution workflow:
1677
-
1678
- 1. cd $worktree
1679
- 2. Resolve the conflicts (see "git status").
1680
- 3. "git add" the resolved files.
1681
- ...
1682
-
1683
- if [[ "$join_method" == "rebase" ]]; then
1684
- cat <<...
1685
- 4. git rebase --continue
1686
- ...
1687
- else
1688
- cat <<...
1689
- 4. git commit
1690
- ...
1691
- fi
1692
-
1693
- cat <<...
1694
- 5. If there are more conflicts, restart at step 2.
1695
- 6. cd $start_pwd
1696
- ...
1697
- local branch_name="${branch:=subrepo/$subdir}"
1698
- if [[ "$command" == "push" ]]; then
1699
- cat <<...
1700
- 7. git subrepo push $subdir $branch_name
1701
- ...
1702
- else
1703
- cat <<...
1704
- 7. git subrepo commit $subdir
1705
- ...
1706
- fi
1707
-
1708
- if [[ "$command" == "pull" && "$join_method" == "rebase" ]]; then
1709
- cat <<...
1710
-
1711
- After you have performed the steps above you can push your local changes
1712
- without repeating the rebase by:
1713
- 1. git subrepo push $subdir $branch_name
1714
-
1715
- ...
1716
- fi
1717
-
1718
- cat <<...
1719
- See "git help $join_method" for details.
1720
-
1721
- Alternatively, you can abort the $command and reset back to where you started:
1722
-
1723
- 1. git subrepo clean $subdir
1724
-
1725
- See "git help subrepo" for more help.
1726
-
1727
- ...
1728
- }
1729
-
1730
- #------------------------------------------------------------------------------
1731
- # Git command wrappers:
1732
- #------------------------------------------------------------------------------
1733
-
1734
- git:branch-exists() {
1735
- git:rev-exists "refs/heads/$1"
1736
- }
1737
-
1738
- git:rev-exists() {
1739
- git rev-list "$1" -1 &> /dev/null
1740
- }
1741
-
1742
- git:ref-exists() {
1743
- test -n "$(git for-each-ref "$1")"
1744
- }
1745
-
1746
- git:get-head-branch-name() {
1747
- output=
1748
- local name="$(git symbolic-ref --short --quiet HEAD)"
1749
- [[ $name == HEAD ]] && return
1750
- output="$name"
1751
- }
1752
-
1753
- git:get-head-branch-commit() {
1754
- output="$(git rev-parse HEAD)"
1755
- }
1756
-
1757
- git:commit-in-rev-list() {
1758
- local commit="$1"
1759
- local list_head="$2"
1760
- git rev-list "$list_head" | grep -q "^$commit"
1761
- }
1762
-
1763
- git:make-ref() {
1764
- local ref_name="$1"
1765
- local commit="$(git rev-parse "$2")"
1766
- RUN git update-ref "$ref_name" "$commit"
1767
- }
1768
-
1769
- git:is_merge_commit() {
1770
- local commit="$1"
1771
- git show --summary "$commit" | grep -q ^Merge:
1772
- }
1773
-
1774
- git:create-worktree() {
1775
- local branch="$1"
1776
- worktree="$GIT_TMP/$branch"
1777
- RUN git worktree add "$worktree" "$branch"
1778
- }
1779
-
1780
- git:remove-worktree() {
1781
- o "Remove worktree: $worktree"
1782
- if [[ -d "$worktree" ]]; then
1783
- o "Check worktree for unsaved changes"
1784
- cd "$worktree"
1785
- assert-working-copy-is-clean
1786
- cd "$start_pwd"
1787
-
1788
- o "Clean up worktree $worktree"
1789
- rm -rf "$worktree"
1790
- RUN git worktree prune
1791
- fi
1792
- }
1793
-
1794
- git:delete-branch() {
1795
- local branch="$1"
1796
- o "Deleting old '$branch' branch."
1797
- # Remove worktree first, otherwise you can't delete the branch
1798
- git:remove-worktree
1799
- FAIL=false RUN git branch -D "$branch"
1800
- }
1801
-
1802
-
1803
- #------------------------------------------------------------------------------
1804
- # Low level sugar commands:
1805
- #------------------------------------------------------------------------------
1806
-
1807
- # Smart command runner:
1808
- RUN() {
1809
- $debug_wanted && $SAY && say '>>>' $*
1810
- if $EXEC; then
1811
- "$@"
1812
- return $?
1813
- fi
1814
-
1815
- OK=true
1816
- set +e
1817
- local rc=
1818
- local out=
1819
- if $debug_wanted && $TTY && interactive; then
1820
- "$@"
1821
- else
1822
- if $OUT; then
1823
- out="$("$@" 2>/dev/null)"
1824
- else
1825
- out="$("$@" 2>&1)"
1826
- fi
1827
- fi
1828
- rc=$?
1829
- set -e
1830
-
1831
- if [[ $rc -ne 0 ]]; then
1832
- OK=false
1833
- $FAIL && error "Command failed: '$*'.\n$out"
1834
- fi
1835
- output="$out"
1836
- }
1837
-
1838
-
1839
- interactive() {
1840
- if [[ -t 0 && -t 1 ]]; then
1841
- return 0
1842
- else
1843
- return 1
1844
- fi
1845
- }
1846
-
1847
- # Call a function with indent increased:
1848
- CALL() {
1849
- local INDENT=" $INDENT"
1850
- "$@" || true
1851
- }
1852
-
1853
- # Print verbose steps for commands with steps:
1854
- o() {
1855
- if $verbose_wanted; then
1856
- echo "$INDENT* $@"
1857
- fi
1858
- }
1859
-
1860
- # Print unless quiet mode:
1861
- say() {
1862
- $quiet_wanted || echo "$@"
1863
- }
1864
-
1865
- # Print to stderr:
1866
- err() {
1867
- echo "$@" >&2
1868
- }
1869
-
1870
- # Check if OK:
1871
- OK() {
1872
- $OK
1873
- }
1874
-
1875
- # Nicely report common error messages:
1876
- usage-error() {
1877
- local msg="git-subrepo: $1" usage=
1878
- if [[ $GIT_SUBREPO_TEST_ERRORS != true ]]; then
1879
- source "${SOURCE_DIR}/git-subrepo.d/help-functions.bash"
1880
- if can "help:$command"; then
1881
- msg=$'\n'"$msg"$'\n'"$("help:$command")"$'\n'
1882
- fi
1883
- fi
1884
- echo "$msg" >&2
1885
- exit 1
1886
- }
1887
-
1888
- # Nicely report common error messages:
1889
- error() {
1890
- local msg="git-subrepo: $1" usage=
1891
- echo -e "$msg" >&2
1892
- exit 1
1893
- }
1894
-
1895
- # Start at the end:
1896
- [[ $BASH_SOURCE != "$0" ]] || main "$@"
1897
-
1898
- # Local Variables:
1899
- # tab-width: 2
1900
- # sh-indentation: 2
1901
- # sh-basic-offset: 2
1902
- # End:
1903
- # vim: set ft=sh sw=2 lisp: