avm-tools 0.129.0 → 0.129.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 (392) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -7
  3. data/lib/avm/tools/version.rb +1 -1
  4. metadata +41 -389
  5. data/sub/avm-eac_postgresql_base0/Gemfile +0 -5
  6. data/sub/avm-eac_postgresql_base0/avm-eac_postgresql_base0.gemspec +0 -19
  7. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/assert.rb +0 -77
  8. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb +0 -39
  9. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance.rb +0 -74
  10. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance_with.rb +0 -18
  11. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/version.rb +0 -7
  12. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0.rb +0 -9
  13. data/sub/avm-eac_postgresql_base0/spec/rubocop_spec.rb +0 -3
  14. data/sub/avm-eac_postgresql_base0/spec/spec_helper.rb +0 -4
  15. data/sub/avm-eac_ubuntu_base0/Gemfile +0 -5
  16. data/sub/avm-eac_ubuntu_base0/avm-eac_ubuntu_base0.gemspec +0 -20
  17. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/apache/resource.rb +0 -59
  18. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/apache.rb +0 -26
  19. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/docker_image.rb +0 -29
  20. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances/base.rb +0 -22
  21. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances.rb +0 -11
  22. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base/docker.rb +0 -19
  23. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base.rb +0 -28
  24. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/version.rb +0 -7
  25. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0.rb +0 -9
  26. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/docker_image_spec.rb +0 -16
  27. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base/docker_spec.rb +0 -14
  28. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base_spec.rb +0 -7
  29. data/sub/avm-eac_ubuntu_base0/spec/rubocop_spec.rb +0 -3
  30. data/sub/avm-eac_ubuntu_base0/spec/spec_helper.rb +0 -4
  31. data/sub/avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/docker_image/Dockerfile.template +0 -24
  32. data/sub/avm-files/Gemfile +0 -5
  33. data/sub/avm-files/avm-files.gemspec +0 -21
  34. data/sub/avm-files/lib/avm/files/appendable/file_content.rb +0 -24
  35. data/sub/avm-files/lib/avm/files/appendable/plain_directory.rb +0 -25
  36. data/sub/avm-files/lib/avm/files/appendable/resource_base.rb +0 -13
  37. data/sub/avm-files/lib/avm/files/appendable/tar_output_command.rb +0 -26
  38. data/sub/avm-files/lib/avm/files/appendable/templatized_directory.rb +0 -29
  39. data/sub/avm-files/lib/avm/files/appendable.rb +0 -55
  40. data/sub/avm-files/lib/avm/files/appender.rb +0 -11
  41. data/sub/avm-files/lib/avm/files/deploy.rb +0 -71
  42. data/sub/avm-files/lib/avm/files/formatter/formats/base.rb +0 -62
  43. data/sub/avm-files/lib/avm/files/formatter/formats/generic_plain.rb +0 -34
  44. data/sub/avm-files/lib/avm/files/formatter/formats/html.rb +0 -45
  45. data/sub/avm-files/lib/avm/files/formatter/formats/javascript.rb +0 -24
  46. data/sub/avm-files/lib/avm/files/formatter/formats/json.rb +0 -27
  47. data/sub/avm-files/lib/avm/files/formatter/formats/php.rb +0 -22
  48. data/sub/avm-files/lib/avm/files/formatter/formats/python.rb +0 -22
  49. data/sub/avm-files/lib/avm/files/formatter/formats/ruby.rb +0 -22
  50. data/sub/avm-files/lib/avm/files/formatter/formats/xml.rb +0 -28
  51. data/sub/avm-files/lib/avm/files/formatter/formats.rb +0 -13
  52. data/sub/avm-files/lib/avm/files/formatter/utf8_assert.rb +0 -74
  53. data/sub/avm-files/lib/avm/files/formatter.rb +0 -90
  54. data/sub/avm-files/lib/avm/files/version.rb +0 -7
  55. data/sub/avm-files/lib/avm/files.rb +0 -9
  56. data/sub/avm-files/spec/rubocop_spec.rb +0 -3
  57. data/sub/avm-files/spec/spec_helper.rb +0 -4
  58. data/sub/avm-git/Gemfile +0 -5
  59. data/sub/avm-git/avm-git.gemspec +0 -21
  60. data/sub/avm-git/lib/avm/git/auto_commit/commit_info.rb +0 -23
  61. data/sub/avm-git/lib/avm/git/auto_commit/rules/base.rb +0 -39
  62. data/sub/avm-git/lib/avm/git/auto_commit/rules/last.rb +0 -19
  63. data/sub/avm-git/lib/avm/git/auto_commit/rules/manual.rb +0 -45
  64. data/sub/avm-git/lib/avm/git/auto_commit/rules/new.rb +0 -24
  65. data/sub/avm-git/lib/avm/git/auto_commit/rules/nth.rb +0 -31
  66. data/sub/avm-git/lib/avm/git/auto_commit/rules/unique.rb +0 -21
  67. data/sub/avm-git/lib/avm/git/auto_commit/rules.rb +0 -31
  68. data/sub/avm-git/lib/avm/git/auto_commit_path/ruby.rb +0 -20
  69. data/sub/avm-git/lib/avm/git/auto_commit_path.rb +0 -28
  70. data/sub/avm-git/lib/avm/git/commit/class_methods.rb +0 -31
  71. data/sub/avm-git/lib/avm/git/commit/deploy.rb +0 -38
  72. data/sub/avm-git/lib/avm/git/commit/deploy_methods.rb +0 -19
  73. data/sub/avm-git/lib/avm/git/commit/diff_tree_line.rb +0 -32
  74. data/sub/avm-git/lib/avm/git/commit/file.rb +0 -46
  75. data/sub/avm-git/lib/avm/git/commit.rb +0 -59
  76. data/sub/avm-git/lib/avm/git/file_auto_fixup.rb +0 -83
  77. data/sub/avm-git/lib/avm/git/issue/complete/commits.rb +0 -42
  78. data/sub/avm-git/lib/avm/git/issue/complete/git_subrepos.rb +0 -23
  79. data/sub/avm-git/lib/avm/git/issue/complete/local_branch.rb +0 -61
  80. data/sub/avm-git/lib/avm/git/issue/complete/local_tag.rb +0 -39
  81. data/sub/avm-git/lib/avm/git/issue/complete/push.rb +0 -60
  82. data/sub/avm-git/lib/avm/git/issue/complete/remote.rb +0 -33
  83. data/sub/avm-git/lib/avm/git/issue/complete/test.rb +0 -40
  84. data/sub/avm-git/lib/avm/git/issue/complete/tracker.rb +0 -28
  85. data/sub/avm-git/lib/avm/git/issue/complete/validation.rb +0 -39
  86. data/sub/avm-git/lib/avm/git/issue/complete/validations.rb +0 -53
  87. data/sub/avm-git/lib/avm/git/issue/complete/working_tree.rb +0 -19
  88. data/sub/avm-git/lib/avm/git/issue/complete.rb +0 -66
  89. data/sub/avm-git/lib/avm/git/issue/deliver.rb +0 -56
  90. data/sub/avm-git/lib/avm/git/issue.rb +0 -11
  91. data/sub/avm-git/lib/avm/git/organize/reference_update.rb +0 -34
  92. data/sub/avm-git/lib/avm/git/organize/repository.rb +0 -76
  93. data/sub/avm-git/lib/avm/git/organize.rb +0 -11
  94. data/sub/avm-git/lib/avm/git/revision_test.rb +0 -105
  95. data/sub/avm-git/lib/avm/git/scms/git/change_tracker.rb +0 -35
  96. data/sub/avm-git/lib/avm/git/scms/git/commit.rb +0 -55
  97. data/sub/avm-git/lib/avm/git/scms/git.rb +0 -73
  98. data/sub/avm-git/lib/avm/git/scms/git_subrepo.rb +0 -39
  99. data/sub/avm-git/lib/avm/git/scms/provider.rb +0 -19
  100. data/sub/avm-git/lib/avm/git/scms.rb +0 -11
  101. data/sub/avm-git/lib/avm/git/subrepo_check/parent.rb +0 -51
  102. data/sub/avm-git/lib/avm/git/subrepo_check/remote.rb +0 -89
  103. data/sub/avm-git/lib/avm/git/subrepo_check/show_result.rb +0 -32
  104. data/sub/avm-git/lib/avm/git/subrepo_check.rb +0 -38
  105. data/sub/avm-git/lib/avm/git/subrepo_checks.rb +0 -59
  106. data/sub/avm-git/lib/avm/git/version.rb +0 -7
  107. data/sub/avm-git/lib/avm/git.rb +0 -11
  108. data/sub/avm-git/spec/lib/avm/git/auto_commit_path_spec.rb +0 -21
  109. data/sub/avm-git/spec/lib/avm/git/commit/deploy_spec.rb +0 -93
  110. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec.rb +0 -13
  111. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.source.out +0 -1
  112. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.target.yaml +0 -7
  113. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.source.out +0 -1
  114. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.target.yaml +0 -7
  115. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.source.out +0 -1
  116. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.target.yaml +0 -7
  117. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.source.out +0 -2
  118. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.target.yaml +0 -13
  119. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.source.out +0 -2
  120. data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.target.yaml +0 -13
  121. data/sub/avm-git/spec/lib/avm/git/commit_spec.rb +0 -56
  122. data/sub/avm-git/spec/lib/avm/git/scms/git_spec.rb +0 -8
  123. data/sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb +0 -8
  124. data/sub/avm-git/spec/rubocop_spec.rb +0 -3
  125. data/sub/avm-git/spec/spec_helper.rb +0 -4
  126. data/sub/eac_git/Gemfile +0 -5
  127. data/sub/eac_git/eac_git.gemspec +0 -20
  128. data/sub/eac_git/lib/eac_git/executables.rb +0 -48
  129. data/sub/eac_git/lib/eac_git/local/branch.rb +0 -27
  130. data/sub/eac_git/lib/eac_git/local/commit/archive.rb +0 -19
  131. data/sub/eac_git/lib/eac_git/local/commit/changed_file.rb +0 -46
  132. data/sub/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +0 -32
  133. data/sub/eac_git/lib/eac_git/local/commit.rb +0 -73
  134. data/sub/eac_git/lib/eac_git/local/dirty_files.rb +0 -37
  135. data/sub/eac_git/lib/eac_git/local/log.rb +0 -17
  136. data/sub/eac_git/lib/eac_git/local/remote.rb +0 -27
  137. data/sub/eac_git/lib/eac_git/local/remotes.rb +0 -20
  138. data/sub/eac_git/lib/eac_git/local/subrepo/config.rb +0 -43
  139. data/sub/eac_git/lib/eac_git/local/subrepo.rb +0 -49
  140. data/sub/eac_git/lib/eac_git/local.rb +0 -126
  141. data/sub/eac_git/lib/eac_git/remote/ls_result.rb +0 -20
  142. data/sub/eac_git/lib/eac_git/remote.rb +0 -19
  143. data/sub/eac_git/lib/eac_git/rspec/setup.rb +0 -23
  144. data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb +0 -71
  145. data/sub/eac_git/lib/eac_git/rspec.rb +0 -9
  146. data/sub/eac_git/lib/eac_git/version.rb +0 -5
  147. data/sub/eac_git/lib/eac_git.rb +0 -7
  148. data/sub/eac_git/spec/lib/eac_git/executables_spec.rb +0 -13
  149. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +0 -13
  150. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +0 -1
  151. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +0 -7
  152. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +0 -1
  153. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +0 -7
  154. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +0 -1
  155. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +0 -7
  156. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +0 -2
  157. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +0 -13
  158. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +0 -2
  159. data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +0 -13
  160. data/sub/eac_git/spec/lib/eac_git/local/commit_spec.rb +0 -58
  161. data/sub/eac_git/spec/rubocop_spec.rb +0 -3
  162. data/sub/eac_git/spec/spec_helper.rb +0 -4
  163. data/sub/eac_git/vendor/git-subrepo/Changes +0 -110
  164. data/sub/eac_git/vendor/git-subrepo/Intro.pod +0 -509
  165. data/sub/eac_git/vendor/git-subrepo/License +0 -21
  166. data/sub/eac_git/vendor/git-subrepo/Makefile +0 -82
  167. data/sub/eac_git/vendor/git-subrepo/Meta +0 -28
  168. data/sub/eac_git/vendor/git-subrepo/ReadMe.pod +0 -698
  169. data/sub/eac_git/vendor/git-subrepo/doc/comparison.swim +0 -35
  170. data/sub/eac_git/vendor/git-subrepo/doc/git-subrepo.swim +0 -608
  171. data/sub/eac_git/vendor/git-subrepo/doc/intro-to-subrepo.swim +0 -387
  172. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Changes +0 -15
  173. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/License +0 -21
  174. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Makefile +0 -45
  175. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Meta +0 -28
  176. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/ReadMe.pod +0 -77
  177. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/bin/bash+ +0 -43
  178. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +0 -61
  179. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +0 -92
  180. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +0 -134
  181. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +0 -134
  182. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/base.t +0 -12
  183. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/fcopy.t +0 -22
  184. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +0 -3
  185. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +0 -3
  186. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +0 -18
  187. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +0 -23
  188. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/test.bash +0 -70
  189. data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/use.t +0 -19
  190. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Changes +0 -15
  191. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/License +0 -21
  192. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Makefile +0 -20
  193. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Meta +0 -30
  194. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +0 -115
  195. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +0 -89
  196. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +0 -15
  197. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +0 -21
  198. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +0 -45
  199. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +0 -28
  200. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +0 -77
  201. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +0 -43
  202. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +0 -61
  203. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +0 -92
  204. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +0 -134
  205. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +0 -134
  206. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +0 -12
  207. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +0 -22
  208. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +0 -3
  209. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +0 -3
  210. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +0 -18
  211. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +0 -23
  212. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +0 -70
  213. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +0 -19
  214. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +0 -15
  215. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +0 -21
  216. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +0 -37
  217. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +0 -28
  218. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +0 -66
  219. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +0 -48
  220. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +0 -153
  221. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +0 -119
  222. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +0 -13
  223. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +0 -10
  224. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +0 -20
  225. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +0 -15
  226. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +0 -9
  227. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +0 -9
  228. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +0 -10
  229. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +0 -20
  230. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +0 -13
  231. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +0 -14
  232. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +0 -7
  233. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +0 -12
  234. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +0 -8
  235. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +0 -9
  236. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +0 -95
  237. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +0 -173
  238. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/fail.t +0 -20
  239. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/more.t +0 -20
  240. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/pass.t +0 -9
  241. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/setup +0 -8
  242. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +0 -11
  243. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +0 -12
  244. data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +0 -10
  245. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo +0 -1903
  246. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +0 -1
  247. data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +0 -339
  248. data/sub/eac_git/vendor/git-subrepo/man/man1/git-subrepo.1 +0 -743
  249. data/sub/eac_git/vendor/git-subrepo/note/0.4.0 +0 -12
  250. data/sub/eac_git/vendor/git-subrepo/note/AllGitCmds +0 -148
  251. data/sub/eac_git/vendor/git-subrepo/note/Cases +0 -32
  252. data/sub/eac_git/vendor/git-subrepo/note/Commands +0 -33
  253. data/sub/eac_git/vendor/git-subrepo/note/Dags +0 -199
  254. data/sub/eac_git/vendor/git-subrepo/note/Gists +0 -7
  255. data/sub/eac_git/vendor/git-subrepo/note/Links +0 -25
  256. data/sub/eac_git/vendor/git-subrepo/note/Plugins +0 -10
  257. data/sub/eac_git/vendor/git-subrepo/note/Spec +0 -39
  258. data/sub/eac_git/vendor/git-subrepo/note/Story1 +0 -57
  259. data/sub/eac_git/vendor/git-subrepo/note/ToDo +0 -55
  260. data/sub/eac_git/vendor/git-subrepo/note/design.swim +0 -137
  261. data/sub/eac_git/vendor/git-subrepo/note/design2.swim +0 -85
  262. data/sub/eac_git/vendor/git-subrepo/note/init-test +0 -38
  263. data/sub/eac_git/vendor/git-subrepo/note/pull-dance.txt +0 -18
  264. data/sub/eac_git/vendor/git-subrepo/note/recreate-rebase-conflict.sh +0 -56
  265. data/sub/eac_git/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +0 -29
  266. data/sub/eac_git/vendor/git-subrepo/note/test-subrepo-push.sh +0 -69
  267. data/sub/eac_git/vendor/git-subrepo/note/test.sh +0 -58
  268. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-completion.pl +0 -210
  269. data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +0 -89
  270. data/sub/eac_git/vendor/git-subrepo/share/completion.bash +0 -42
  271. data/sub/eac_git/vendor/git-subrepo/share/enable-completion.sh +0 -50
  272. data/sub/eac_git/vendor/git-subrepo/share/git-completion.bash +0 -2738
  273. data/sub/eac_git/vendor/git-subrepo/share/zsh-completion/_git-subrepo +0 -81
  274. data/sub/eac_git/vendor/git-subrepo/test/branch-all.t +0 -41
  275. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list-one-path.t +0 -43
  276. data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list.t +0 -47
  277. data/sub/eac_git/vendor/git-subrepo/test/branch.t +0 -52
  278. data/sub/eac_git/vendor/git-subrepo/test/clean.t +0 -43
  279. data/sub/eac_git/vendor/git-subrepo/test/clone-annotated-tag.t +0 -45
  280. data/sub/eac_git/vendor/git-subrepo/test/clone.t +0 -107
  281. data/sub/eac_git/vendor/git-subrepo/test/compile.t +0 -19
  282. data/sub/eac_git/vendor/git-subrepo/test/config.t +0 -58
  283. data/sub/eac_git/vendor/git-subrepo/test/encode.t +0 -91
  284. data/sub/eac_git/vendor/git-subrepo/test/error.t +0 -171
  285. data/sub/eac_git/vendor/git-subrepo/test/fetch.t +0 -43
  286. data/sub/eac_git/vendor/git-subrepo/test/gitignore.t +0 -61
  287. data/sub/eac_git/vendor/git-subrepo/test/init.t +0 -64
  288. data/sub/eac_git/vendor/git-subrepo/test/issue29.t +0 -98
  289. data/sub/eac_git/vendor/git-subrepo/test/issue95.t +0 -98
  290. data/sub/eac_git/vendor/git-subrepo/test/issue96.t +0 -96
  291. data/sub/eac_git/vendor/git-subrepo/test/pull-all.t +0 -38
  292. data/sub/eac_git/vendor/git-subrepo/test/pull-merge.t +0 -113
  293. data/sub/eac_git/vendor/git-subrepo/test/pull-message.t +0 -88
  294. data/sub/eac_git/vendor/git-subrepo/test/pull-new-branch.t +0 -58
  295. data/sub/eac_git/vendor/git-subrepo/test/pull-ours.t +0 -90
  296. data/sub/eac_git/vendor/git-subrepo/test/pull-theirs.t +0 -82
  297. data/sub/eac_git/vendor/git-subrepo/test/pull-twice.t +0 -44
  298. data/sub/eac_git/vendor/git-subrepo/test/pull-worktree.t +0 -40
  299. data/sub/eac_git/vendor/git-subrepo/test/pull.t +0 -99
  300. data/sub/eac_git/vendor/git-subrepo/test/push-after-init.t +0 -51
  301. data/sub/eac_git/vendor/git-subrepo/test/push-force.t +0 -56
  302. data/sub/eac_git/vendor/git-subrepo/test/push-new-branch.t +0 -61
  303. data/sub/eac_git/vendor/git-subrepo/test/push-no-changes.t +0 -29
  304. data/sub/eac_git/vendor/git-subrepo/test/push-squash.t +0 -56
  305. data/sub/eac_git/vendor/git-subrepo/test/push.t +0 -176
  306. data/sub/eac_git/vendor/git-subrepo/test/reclone.t +0 -45
  307. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/HEAD +0 -1
  308. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/config +0 -4
  309. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
  310. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
  311. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
  312. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
  313. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  314. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
  315. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/heads/master +0 -1
  316. data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/tags/A +0 -1
  317. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/HEAD +0 -1
  318. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/config +0 -4
  319. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
  320. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
  321. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  322. data/sub/eac_git/vendor/git-subrepo/test/repo/foo/refs/heads/master +0 -1
  323. data/sub/eac_git/vendor/git-subrepo/test/repo/init/HEAD +0 -1
  324. data/sub/eac_git/vendor/git-subrepo/test/repo/init/config +0 -5
  325. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
  326. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
  327. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +0 -2
  328. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
  329. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
  330. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
  331. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
  332. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
  333. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +0 -1
  334. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
  335. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
  336. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +0 -1
  337. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
  338. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
  339. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +0 -3
  340. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +0 -2
  341. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +0 -2
  342. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +0 -1
  343. data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
  344. data/sub/eac_git/vendor/git-subrepo/test/repo/init/refs/heads/master +0 -1
  345. data/sub/eac_git/vendor/git-subrepo/test/setup +0 -205
  346. data/sub/eac_git/vendor/git-subrepo/test/status.t +0 -68
  347. data/sub/eac_git/vendor/git-subrepo/test/submodule.t +0 -45
  348. data/sub/eac_rest/Gemfile +0 -5
  349. data/sub/eac_rest/eac_rest.gemspec +0 -18
  350. data/sub/eac_rest/lib/eac_rest/api.rb +0 -50
  351. data/sub/eac_rest/lib/eac_rest/entity.rb +0 -16
  352. data/sub/eac_rest/lib/eac_rest/request.rb +0 -95
  353. data/sub/eac_rest/lib/eac_rest/response.rb +0 -112
  354. data/sub/eac_rest/lib/eac_rest/version.rb +0 -5
  355. data/sub/eac_rest/lib/eac_rest.rb +0 -7
  356. data/sub/eac_rest/spec/rubocop_spec.rb +0 -3
  357. data/sub/eac_rest/spec/spec_helper.rb +0 -4
  358. data/sub/eac_templates/Gemfile +0 -5
  359. data/sub/eac_templates/eac_templates.gemspec +0 -19
  360. data/sub/eac_templates/lib/eac_templates/core_ext.rb +0 -4
  361. data/sub/eac_templates/lib/eac_templates/directory.rb +0 -108
  362. data/sub/eac_templates/lib/eac_templates/file.rb +0 -48
  363. data/sub/eac_templates/lib/eac_templates/from_all_gems.rb +0 -4
  364. data/sub/eac_templates/lib/eac_templates/from_gem.rb +0 -35
  365. data/sub/eac_templates/lib/eac_templates/patches/module/erb_template.rb +0 -9
  366. data/sub/eac_templates/lib/eac_templates/patches/module/template.rb +0 -10
  367. data/sub/eac_templates/lib/eac_templates/patches/module.rb +0 -4
  368. data/sub/eac_templates/lib/eac_templates/patches/object/erb_template.rb +0 -9
  369. data/sub/eac_templates/lib/eac_templates/patches/object/template.rb +0 -9
  370. data/sub/eac_templates/lib/eac_templates/patches/object.rb +0 -4
  371. data/sub/eac_templates/lib/eac_templates/patches.rb +0 -4
  372. data/sub/eac_templates/lib/eac_templates/searcher.rb +0 -53
  373. data/sub/eac_templates/lib/eac_templates/variable_not_found_error.rb +0 -5
  374. data/sub/eac_templates/lib/eac_templates/variable_providers/base.rb +0 -21
  375. data/sub/eac_templates/lib/eac_templates/variable_providers/config_reader.rb +0 -27
  376. data/sub/eac_templates/lib/eac_templates/variable_providers/entries_reader.rb +0 -23
  377. data/sub/eac_templates/lib/eac_templates/variable_providers/generic.rb +0 -23
  378. data/sub/eac_templates/lib/eac_templates/variable_providers/hash.rb +0 -27
  379. data/sub/eac_templates/lib/eac_templates/variable_providers.rb +0 -23
  380. data/sub/eac_templates/lib/eac_templates/version.rb +0 -5
  381. data/sub/eac_templates/lib/eac_templates.rb +0 -7
  382. data/sub/eac_templates/spec/lib/eac_templates/file_spec.rb +0 -35
  383. data/sub/eac_templates/spec/lib/eac_templates/file_spec_files/expected_content +0 -2
  384. data/sub/eac_templates/spec/lib/eac_templates/file_spec_files/source.template +0 -2
  385. data/sub/eac_templates/spec/lib/eac_templates/searcher_spec.rb +0 -30
  386. data/sub/eac_templates/spec/lib/eac_templates/searcher_spec_files/path1/subdir1/file1.template +0 -1
  387. data/sub/eac_templates/spec/lib/eac_templates/searcher_spec_files/path1/subdir1/file2 +0 -1
  388. data/sub/eac_templates/spec/lib/eac_templates/searcher_spec_files/path2/subdir1/file3.template +0 -1
  389. data/sub/eac_templates/spec/lib/object/template_spec.rb +0 -23
  390. data/sub/eac_templates/spec/lib/object/template_spec_files/path/my_stub_with_template +0 -1
  391. data/sub/eac_templates/spec/rubocop_spec.rb +0 -3
  392. data/sub/eac_templates/spec/spec_helper.rb +0 -4
@@ -1,387 +0,0 @@
1
- = Introducing Git Subrepos
2
-
3
- There is a new git command called `subrepo` that is meant to be a solid
4
- alternative to the `submodule` and `subtree` commands. All 3 of these commands
5
- allow you to include external repositories (pinned to specific commits) in
6
- your main repository. This is an often needed feature for project development
7
- under a source control system like Git. Unfortunately, the `submodule` command
8
- is severely lacking, and the `subtree` command (an attempt to make things
9
- better) is also very flawed. Fortunately, the `subrepo` command is here to
10
- save the day.
11
-
12
- This article will discuss how the previous commands work, and where they go
13
- wrong, while explaining how the new `subrepo` command fixes the issues.
14
-
15
- It should be noted that there are 3 distinct roles (ways people use repos)
16
- involved in discussing this topic:
17
-
18
- * *owner* — The primary author and repo owner
19
- * *collaborators* — Other developers who contribute to the repo
20
- * *users* — People who simply use the repo software
21
-
22
- == Introducing `subrepo`
23
-
24
- While the main point is to show how subrepo addresses the shortcomings of
25
- submodule and subtree, I'll start by giving a quick intro to the subrepo
26
- command.
27
-
28
- Let's say that you have a project repo called 'freebird' and you want to have
29
- it include 2 other external repos, 'lynyrd' and 'skynyrd'. You would do the
30
- following:
31
-
32
- git clone git@github.com/you/freebird
33
- cd freebird
34
- git subrepo clone git@github.com/you/lynyrd ext/lynyrd
35
- git subrepo clone git@github.com/you/skynyrd ext/skynyrd --branch=1975
36
-
37
- What these commands do (at a high level) should be obvious. They "clone"
38
- (add) the repos content into the subdirectories you told them to. The details
39
- of what is happening to your repo will be discussed later, but adding new
40
- subrepos is easy. If you need to update the subrepos later:
41
-
42
- git subrepo pull ext/lynyrd
43
- git subrepo pull ext/skynyrd --branch=1976
44
-
45
- The lynyrd repo is tracking the upstream master branch, and you've changed the
46
- skynyrd subrepo to the 1976 branch. Since these subrepos are owned by 'you',
47
- you might want to change them in the context of your freebird repo. When
48
- things are working, you can push the subrepo changes back:
49
-
50
- git subrepo push ext/lynyrd
51
- git subrepo push ext/skynyrd
52
-
53
- Looks simple right? It's supposed to be. The intent of `subrepo` is to do the
54
- right things, and to not cause problems.
55
-
56
- Of course there's more to it under the hood, and that's what the rest of this
57
- article is about.
58
-
59
- == Git Submodules
60
-
61
- Submodules tend to receive a lot of bad press. Here's some of it:
62
-
63
- * http://ayende.com/blog/4746/the-problem-with-git-submodules
64
- * http://somethingsinistral.net/blog/git-submodules-are-probably-not-the-answer/
65
- * http://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/
66
-
67
- A quick recap of some of the good and bad things about submodules:
68
-
69
- Good:
70
-
71
- * Use an external repo in a dedicated subdir of your project.
72
- * Pin the external repo to a specific commit.
73
- * The `git-submodule` command is a core part of the Git project.
74
-
75
- Bad:
76
-
77
- * Users have to know a repo has submodules.
78
- * Users have to get the subrepos manually.
79
- * Pulling a repo with submodules won't pull in the new submodule changes.
80
- * A submodule will break if the referenced repo goes away.
81
- * A submodule will break if a forced push removes the referenced commit.
82
- * Can't use different submodules/commits per main project branch.
83
- * Can't "try out" a submodule on alternate branch.
84
- * Main repo can be pushed upstream pointing to unpushed submod commits.
85
- * Command capability differs across Git versions.
86
- * Often need to change remote url, to push submodule changes upstream.
87
- * Removing or renaming a submodule requires many steps.
88
-
89
- Internally, submodules are a real mess. They give the strong impression of
90
- being bolted on, well after Git was designed. Some commands are aware of the
91
- existence of submodules (although usually half-heartedly), and many commands
92
- are oblivious. For instance the git-clone command has a `--recursive` option
93
- to clone all subrepos, but it's not a default, so you still need to be aware
94
- of the need. The git-checkout command does nothing with the submodules, even
95
- if they are intended to differ across branches.
96
-
97
- Let's talk a bit about how submodules are implemented in Git. Information
98
- about them is stored in 3 different places (in the top level repo directory):
99
-
100
- * `.gitmodules`
101
- * `.git/config`
102
- * `.git/modules` — The submodule repo's meta data (refs/objects)
103
-
104
- So some of the information lives in the repo history (.gitmodules), but other
105
- info (.git/) is only known to the local repo.
106
-
107
- In addition, the submodule introduces a new low level concept, to the
108
- commit/tree/blob graph. Normally a git tree object points to blob (file)
109
- objects and more tree (directory) objects. Submodules have tree objects point
110
- to *commit* objects. While this seems clever and somewhat reasonable, it also
111
- means that every other git command (which was built on the super clean Git
112
- data model) has to be aware of this new possibility (and deal with it
113
- appropriately).
114
-
115
- The point is that, while submodules are a real need, and a lot of work has
116
- gone into making them work decently, they are essentially a kludge to the Git
117
- model, and it is quite understandable why they haven't worked out as well as
118
- people would expect.
119
-
120
- NOTE: Submodules /are/ getting better with each release of Git, but it's still
121
- an endless catch up game.
122
-
123
- == Git Subtrees
124
-
125
- One day, someone decided to think different. Instead of pointing to external
126
- repos, why not just include them into the main repo (but also allow them to be
127
- pulled and pushed separately as needed)?
128
-
129
- At first this may feel like a wasteful approach. Why keep other repos
130
- physically inside your main one? But if you think about it abstractly, what's
131
- the difference? You want your users and collaborators to have all this code
132
- because your project needs it. So why worry about how it happens? In the end,
133
- the choice is yours, but I've grown very comfortable with this concept and
134
- I'll try to justify it well. I should note that the first paragraph of the
135
- `submodule` doc suggests considering this alternative.
136
-
137
- The big win here is that you can do this using the existing git model.
138
- Nothing new is added. You are just adding commits to a history. You can do it
139
- different on every branch. You can merge branches sensibly.
140
-
141
- The git-subtree command seems to have been inspired by Git's subtree merge
142
- strategy, which it uses internally, and possibly got its name from. A subtree
143
- merge allows you to take a completely separate Git history and make it be a
144
- subdirectory of your repo.
145
-
146
- Adding a subtree was the easy part. All that needed to be done after that was
147
- to figure out a way to pull upstream changes and push local ones back
148
- upstream. And that's what the `git-subtree` command does.
149
-
150
- So what's the problem with git-subtree then?
151
-
152
- Well unfortunately, it drops a few balls. The main problems come down to an
153
- overly complicated commandline UX, poor collaborator awareness, and a fragile
154
- and messy implementation.
155
-
156
- Good:
157
-
158
- * Use an external repo in a dedicated subdir of your project.
159
- * Pin the external repo to a specific commit.
160
- * Users get everything with a normal clone command.
161
- * Users don't need to know that subtrees are involved.
162
- * Can use different submodules/commits per main project branch.
163
- * Users don't need the subtree command. Only owners and collaborators.
164
-
165
- Bad:
166
- * The remote url and branch info is not saved (except in the history).
167
- * Owners and collaborators have to enter the remote for every command.
168
- * Collaborators aren't made aware that subtrees are involved.
169
- * Pulled history is not squashed by default.
170
- * Creates a messy historical view. (See below)
171
- * Bash code is complicated.
172
- * Only one test file. Currently is failing.
173
-
174
- As you can see, subtree makes quite a few things better, but after trying it
175
- for a while, the experience was more annoying than submodules. For example,
176
- consider this usage:
177
-
178
- $ git subtree add --squash --prefix=foo git@github.com:my/thing mybranch
179
- # weeks go by…
180
- $ git subtree pull --squash --prefix=foo git@github.com:my/thing mybranch
181
- # time to push local subtree changes back upstream
182
- $ git subtree push --prefix=foo git@github.com:my/thing mybranch
183
-
184
- The first thing you notice is the overly verbose syntax. It's justified in the
185
- first command, but in the other 2 commands I really don't want to have to
186
- remember what the remote and branch are that I'm using.
187
-
188
- Moreover, my collaborators have no idea that subtrees are involved, let alone
189
- where they came from.
190
-
191
- Consider the equivalent subrepo commands:
192
-
193
- $ git subrepo clone git@github.com:my/thing foo -b mybranch
194
- $ git subrepo pull foo
195
- $ git subrepo push foo
196
-
197
- Collaborators see a file called 'foo/.gitrepo', and know that the subdir is a
198
- subrepo. The file contains all the information needed by future commands
199
- applied to that subrepo.
200
-
201
- == Git Subrepos
202
-
203
- Now is a good time to dive into the techinical aspects of the `subrepo`
204
- command, but first let me explain how it came about.
205
-
206
- As you may have surmised by now, I am the author of git-subrepo. I'd used
207
- submodules on and off for years, and when I became aware of subtree I gave it
208
- a try, but I quickly realized its problems. I decided maybe it could be
209
- improved. I decided to write down my expected commandline usage and my ideals
210
- of what it would and would not do. Then I set off to implement it. It's been a
211
- long road, but what I ended up with was even better than what I wanted from
212
- the start.
213
-
214
- Let's review the Goods and Bads:
215
-
216
- Good:
217
-
218
- * Use an external repo in a dedicated subdir of your project.
219
- * Pin the external repo to a specific commit.
220
- * Users get everything with a normal clone command.
221
- * Users don't need to know that subrepos are involved.
222
- * Can use different submodules/commits per main project branch.
223
- * Meta info is kept in an obvious place.
224
- * Everyone knows when a subdir is a subrepo.
225
- * Commandline UX is minimal and intuitive.
226
- * Pulled history is always squashed out locally.
227
- * Pushed history is kept intact.
228
- * Creates a clean historical view. (See below)
229
- * Bash code is very simple and easy to follow.
230
- * Comprehensive test suite. Currently passing on travis:
231
-
232
- <badge travis ingydotnet/git-subrepo>
233
-
234
- Bad:
235
-
236
- * --Subrepo is very new.-- (no longer true)
237
- * --Not well tested in the wild.-- (no longer true)
238
-
239
- This review may seem somewhat slanted, but I honestly am not aware of any
240
- "bad" points that I'm not disclosing. That said, I am sure time will reveal
241
- bugs and shortcomings. Those can usually be fixed. Hopefully the *model* is
242
- correct, because that's harder to fix down the road.
243
-
244
- OK. So how does it all work?
245
-
246
- There are 3 main commands: clone/pull/push. Let's start with the clone
247
- command. This is the easiest part. You give it a remote url, possibly a new
248
- subdir to put it, and possibly a remote branch to use. I say possibly, because
249
- the command can guess the subdir name (just like the git-clone command does),
250
- and the branch can be the upstream default branch.
251
-
252
- Given this we do the following steps internally:
253
-
254
- * Fetch the remote content (for a specific refspec)
255
- * Read the remote head tree into the index
256
- * Checkout the index into the new subdir
257
- * Create a new subrepo commit object for the subdir content
258
- * Add a state file called .gitrepo to the new subrepo/subdir
259
- * Amend the merge commit with this new file
260
-
261
- This process adds something like this to the top of your history:
262
-
263
- * 9b6ddc9 git subrepo clone git@github.com:you/foo.git foo/
264
- * 37c61a5 Previous head commit of your repo
265
-
266
- The entire history has been squashed down into one commit, and placed on top of
267
- your history. This is important as it keeps your history as clean as possible.
268
- You don't need to have the subrepo history in your main project, since it is
269
- immutably available elsewhere, and you have a pointer to that place.
270
-
271
- The new foo/.gitrepo file looks like this:
272
-
273
- [subrepo]
274
- remote = git@github.com:you/foo.git
275
- branch = master
276
- commit = 14c96c6931b41257b2d42b2edc67ddc659325823
277
- parent = 37c61a5a234f5dd6f5c2aec037509f50d3a79b8f
278
- cmdver = 0.1.0
279
-
280
- It contains all the info needed now and later. Note that the repo url is the
281
- generally pushable form, rather than the publically readable (https://…) form.
282
- This is the best practice. Users of your repo don't need access to this url,
283
- because the content is already in your repo. Only you and your collaborators
284
- need this url to pull/push in the future.
285
-
286
- The next command is the pull command. Normally you just give it the subrepo's
287
- subdir path (although you can change the branch with -b), and it will get the
288
- other info from the subdir/.gitrepo file.
289
-
290
- The pull command does these steps:
291
-
292
- * Fetch the upstream content
293
- * Check if anything needs pulling
294
- * Create a branch of local subrepo commits since last pull
295
- * Rebase this branch onto the upstream commits
296
- * Commit the HEAD of the rebased content
297
- * Update/amend the .gitrepo file
298
-
299
- === Clean History
300
-
301
- I've talked a bit about clean history but let me show you a comparison between
302
- subrepo and subtree. Let's run this command sequence using both methods. Note
303
- the differences between /both/ the command syntax required, and the branch
304
- history produced.
305
-
306
- Subrepo first:
307
-
308
- $ git subrepo clone git@github.com:user/abc
309
- $ git subrepo clone git@github.com:user/def xyz
310
- $ git subrepo pull abc
311
- $ git subrepo pull xyz
312
-
313
- The resulting history is:
314
-
315
- * b1f60cc subrepo pull xyz
316
- * 4fb0276 subrepo pull abc
317
- * bcef2a0 subrepo clone git@github.com:user/def xyz
318
- * bebf0db subrepo clone git@github.com:user/abc
319
- * 64eeaa6 (origin/master, origin/HEAD) O HAI FREND
320
-
321
- Compare that to *subtree*. This:
322
-
323
- $ git subtree add abc git@github.com:user/abc master
324
- $ git subtree add xyz git@github.com:user/def master
325
- $ git subtree pull abc git@github.com:user/abc master
326
- $ git subtree pull xyz git@github.com:user/def master
327
-
328
- Produces this:
329
-
330
- * 739e45a (HEAD, master) Merge commit '5f563469d886d53e19cb908b3a64e4229f88a2d1'
331
- |\
332
- | * 5f56346 Squashed 'xyz/' changes from 08c7421..365409f
333
- * | 641f5e5 Merge commit '8d88e90ce5f653ed2e7608a71b8693a2174ea62a'
334
- |\ \
335
- | * | 8d88e90 Squashed 'abc/' changes from 08c7421..365409f
336
- * | | 1703ed2 Merge commit '0e091b672c4bbbbf6bc4f6694c475d127ffa21eb' as 'xyz'
337
- |\ \ \
338
- | | |/
339
- | |/|
340
- | * | 0e091b6 Squashed 'xyz/' content from commit 08c7421
341
- | /
342
- * | 07b77e7 Merge commit 'cd2b30a0229d931979ed4436b995875ec563faea' as 'abc'
343
- |\ \
344
- | |/
345
- | * cd2b30a Squashed 'abc/' content from commit 08c7421
346
- * 64eeaa6 (origin/master, origin/HEAD) O HAI FREND
347
-
348
- This was from a minimal case. Subtree history (when viewed this way at least)
349
- gets unreasonably ugly fast. Subrepo history, by contrast, always looks as
350
- clean as shown.
351
-
352
- The final command, push, bascially just does the pull/rebase dance above
353
- described, and pushes the resulting history back. It does not squash the
354
- commits made locally, because it assumed that when you changed the local
355
- subrepo, you made messages that were intended to eventually be published back
356
- upstream.
357
-
358
- == Conflict Resolution
359
-
360
- The commands described above can also be done "by hand". If something fails
361
- during a pull or push (generally in the rebasing) then the command will tell
362
- you what to do to finish up.
363
-
364
- You might choose to do everything by hand, and do your own merging strategies.
365
- This is perfectly reasonable. The `subrepo` command offers a few other helper
366
- commands to help you get the job done:
367
-
368
- * `fetch` - Fetch the upstream and create a `subrepo/remote/<subdir>` ref.
369
- * `branch` - Create a branch of local subdir commits since the last pull,
370
- called `subrepo/<subdir>`.
371
- * `commit` - Commit a merged branch's HEAD back into your repo.
372
- * `status` - Show lots of useful info about the current state of the subrepos.
373
- * `clean` - Remove branches, ref and remotes created by subrepo commands.
374
- * `help` - Read the complete documentation!
375
-
376
- == Conclusion
377
-
378
- Hopefully by now, you see that submodules are a painful choice with a dubious
379
- future, and that subtree, while a solid idea has many usage issues.
380
-
381
- Give `subrepo` a try. It's painless, easily revertable and just might be what
382
- the doctor ordered.
383
-
384
- == Reference Links
385
-
386
- * http://longair.net/blog/2010/06/02/git-submodules-explained/
387
- * http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
@@ -1,15 +0,0 @@
1
- ---
2
- version: 0.0.7
3
- date: Sat Jan 23 16:28:59 PST 2016
4
- changes:
5
- - Update tooling, and copyright
6
- ---
7
- version: 0.0.6
8
- date: Fri Jan 23 21:05:15 PST 2015
9
- changes:
10
- - Update tooling, and copyright
11
- ---
12
- version: 0.0.1
13
- date: Sun Oct 27 19:07:51 PDT 2013
14
- changes:
15
- - First release.
@@ -1,21 +0,0 @@
1
- (The MIT License)
2
-
3
- Copyright © 2013-2016 Ingy döt Net
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of
6
- this software and associated documentation files (the ‘Software’), to deal in
7
- the Software without restriction, including without limitation the rights to
8
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9
- of the Software, and to permit persons to whom the Software is furnished to do
10
- so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,45 +0,0 @@
1
- ifeq ($(MAKECMDGOALS),install)
2
- ifeq "$(shell bpan version 2>/dev/null)" ""
3
- $(error 'BPAN not installed. See http://bpan.org')
4
- endif
5
- endif
6
-
7
- NAME := bash+
8
- LIB := lib/$(NAME).bash
9
- DOC := doc/$(NAME).swim
10
- MAN1 := man/man1
11
- MAN3 := man/man3
12
-
13
- INSTALL_LIB ?= $(shell bpan env BPAN_LIB)
14
- INSTALL_DIR ?= test
15
- INSTALL_MAN1 ?= $(shell bpan env BPAN_MAN1)
16
- INSTALL_MAN3 ?= $(shell bpan env BPAN_MAN3)
17
-
18
- default: help
19
-
20
- help:
21
- @echo 'Rules: test, install, doc'
22
-
23
- .PHONY: test
24
- test:
25
- prove $(PROVEOPT:%=% )test/
26
-
27
- install:
28
- install -C -d -m 0755 $(INSTALL_LIB)/$(INSTALL_DIR)/
29
- install -C -m 0755 $(LIB) $(INSTALL_LIB)/$(INSTALL_DIR)/
30
- install -C -d -m 0755 $(INSTALL_MAN1)/
31
- install -C -d -m 0755 $(INSTALL_MAN3)/
32
- install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
33
- install -C -m 0644 $(MAN3)/$(NAME).3 $(INSTALL_MAN3)/
34
-
35
- .PHONY: doc
36
- doc: ReadMe.pod $(MAN1)/$(NAME).1 $(MAN3)/$(NAME).3
37
-
38
- ReadMe.pod: $(DOC)
39
- swim --to=pod --complete --wrap $< > $@
40
-
41
- $(MAN1)/%.1: doc/%.swim
42
- swim --to=man $< > $@
43
-
44
- $(MAN3)/%.3: doc/%.swim
45
- swim --to=man $< > $@
@@ -1,28 +0,0 @@
1
- =meta: 0.0.2
2
-
3
- name: bashplus
4
- version: 0.0.7
5
- abstract: Modern Bash Programming
6
- homepage: http://bpan.org/package/bashplus/
7
-
8
- license: MIT
9
- copyright: 2013-2016
10
- author:
11
- name: Ingy döt Net
12
- email: ingy@ingy.net
13
- github: ingydotnet
14
- twitter: ingydotnet
15
- freenode: ingy
16
- homepage: http://ingy.net
17
-
18
- requires:
19
- bash: 3.2.0
20
- test:
21
- cmd: make test
22
- install:
23
- cmd: make install
24
-
25
- devel:
26
- git: git@github.org/ingydotnet/bashplus
27
- irc: irc.freenode.net/bpan
28
- bug: https://github.com/ingydotnet/bashplus/issues/
@@ -1,77 +0,0 @@
1
- =pod
2
-
3
- =for comment
4
- DO NOT EDIT. This Pod was generated by Swim v0.1.41.
5
- See http://github.com/ingydotnet/swim-pm#readme
6
-
7
- =encoding utf8
8
-
9
- =head1 Name
10
-
11
- Bash+(1) - Modern Bash Programming
12
-
13
- =for html
14
- <a href="https://travis-ci.org/ingydotnet/bashplus"><img src="https://travis-ci.org/ingydotnet/bashplus.png" alt="bashplus"></a>
15
-
16
- =head1 Synopsis
17
-
18
- source bash+ :std :array
19
-
20
- use Foo::Bar this that
21
-
22
- Array.new args "$@"
23
-
24
- if args.empty?; then
25
- die "I need args!"
26
- fi
27
-
28
- Foo::Bar.new foo args
29
-
30
- this is awesome # <= this is a real command! (You just imported it)
31
-
32
- =head1 Description
33
-
34
- Bash+ is just Bash... B<plus> some libraries that can make Bash programming a
35
- lot nicer.
36
-
37
- =for comment # Installation
38
-
39
- Get the source code from GitHub:
40
-
41
- git clone git@github.com:ingydotnet/bashplus
42
-
43
- Then run:
44
-
45
- make test
46
- make install # Possibly with 'sudo'
47
-
48
- =head1 Usage
49
-
50
- For now look at some libraries the use Bash+:
51
-
52
- =over
53
-
54
- =item * L<https://github.com/ingydotnet/git-hub>
55
-
56
- =item * L<https://github.com/ingydotnet/json-bash>
57
-
58
- =item * L<https://github.com/ingydotnet/test-more-bash>
59
-
60
- =back
61
-
62
- =head1 Status
63
-
64
- If you are interested in chatting about this, C</join #bpan> on
65
- irc.freenode.net.
66
-
67
- =head1 Author
68
-
69
- Written by Ingy döt Net <ingy@ingy.net>
70
-
71
- =head1 Copyright & License
72
-
73
- Copyright 2013-2016. Ingy döt Net.
74
-
75
- The MIT License (MIT).
76
-
77
- =cut
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env bash
2
- #------------------------------------------------------------------------------
3
- # Bash+ - Modern Bash Programming
4
- #
5
- # Copyright (c) 2013-2016 Ingy döt Net
6
- #------------------------------------------------------------------------------
7
-
8
- set -e
9
- shopt -s compat31&>/dev/null||:
10
-
11
- #------------------------------------------------------------------------------
12
- # Determine how `bash+` was called, and do the right thing:
13
- #------------------------------------------------------------------------------
14
- if [ "${BASH_SOURCE[0]}" != "$0" ]; then
15
- # 'bash+' is being sourced:
16
- [[ "${BASH_SOURCE[0]}" =~ /bin/bash\\+$ ]] || {
17
- echo "Invalid Bash+ path '${BASH_SOURCE[0]}'" 2> /dev/null
18
- exit 1
19
- }
20
- source "${BASH_SOURCE[0]%/bin/*}"/lib/bash+.bash || return $?
21
- bash+:import "$@"
22
- return $?
23
- else
24
- if [ $# -eq 1 -a "$1" == --version ]; then
25
- echo 'bash+ version 0.0.7'
26
- else
27
- cat <<...
28
-
29
- Greetings modern Bash programmer. Welcome to Bash+!
30
-
31
- Bash+ is framework that makes Bash programming more like Ruby and Perl.
32
-
33
- See: https://github.com/bpan-org/bashplus
34
-
35
- If you got here trying to use bash+ in a program, you need to source it:
36
-
37
- source bash+
38
-
39
- Happy Bash Hacking!
40
-
41
- ...
42
- fi
43
- fi
@@ -1,61 +0,0 @@
1
- Bash+(1)
2
- ========
3
-
4
- Modern Bash Programming
5
-
6
- <badge travis ingydotnet/bashplus>
7
-
8
- = Synopsis
9
-
10
- source bash+ :std :array
11
-
12
- use Foo::Bar this that
13
-
14
- Array.new args "$@"
15
-
16
- if args.empty?; then
17
- die "I need args!"
18
- fi
19
-
20
- Foo::Bar.new foo args
21
-
22
- this is awesome # <= this is a real command! (You just imported it)
23
-
24
- = Description
25
-
26
- Bash+ is just Bash... *plus* some libraries that can make Bash programming a
27
- lot nicer.
28
-
29
- ## Installation
30
-
31
- Get the source code from GitHub:
32
-
33
- git clone git@github.com:ingydotnet/bashplus
34
-
35
- Then run:
36
-
37
- make test
38
- make install # Possibly with 'sudo'
39
-
40
- = Usage
41
-
42
- For now look at some libraries the use Bash+:
43
-
44
- * https://github.com/ingydotnet/git-hub
45
- * https://github.com/ingydotnet/json-bash
46
- * https://github.com/ingydotnet/test-more-bash
47
-
48
- = Status
49
-
50
- If you are interested in chatting about this, `/join #bpan` on
51
- irc.freenode.net.
52
-
53
- = Author
54
-
55
- Written by Ingy döt Net <ingy@ingy.net>
56
-
57
- = Copyright & License
58
-
59
- Copyright 2013-2016. Ingy döt Net.
60
-
61
- The MIT License (MIT).