eac_tools 0.100.0 → 0.101.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +29 -19
- data/lib/eac_tools/version.rb +1 -1
- data/sub/avm/avm.gemspec +2 -2
- data/sub/avm/lib/avm/applications/base/local_instance.rb +0 -2
- data/sub/avm/lib/avm/applications/base/local_source.rb +0 -1
- data/sub/avm/lib/avm/applications/base/organization.rb +0 -2
- data/sub/avm/lib/avm/applications/base/publishing.rb +0 -2
- data/sub/avm/lib/avm/applications/base/scm.rb +0 -2
- data/sub/avm/lib/avm/applications/base/stereotype.rb +0 -2
- data/sub/avm/lib/avm/applications/base.rb +0 -2
- data/sub/avm/lib/avm/data/clearer.rb +0 -2
- data/sub/avm/lib/avm/data/dumper.rb +0 -3
- data/sub/avm/lib/avm/data/loader.rb +0 -3
- data/sub/avm/lib/avm/data/package/clear.rb +0 -2
- data/sub/avm/lib/avm/data/package/dump.rb +0 -3
- data/sub/avm/lib/avm/data/package/load.rb +0 -3
- data/sub/avm/lib/avm/data/package.rb +0 -2
- data/sub/avm/lib/avm/data/performer.rb +0 -2
- data/sub/avm/lib/avm/data/unit.rb +0 -2
- data/sub/avm/lib/avm/data/unit_with_commands.rb +0 -3
- data/sub/avm/lib/avm/docker/image.rb +0 -3
- data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +0 -2
- data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +0 -1
- data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +0 -1
- data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +0 -1
- data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +0 -1
- data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +0 -1
- data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +0 -3
- data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +0 -2
- data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +0 -3
- data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +0 -2
- data/sub/avm/lib/avm/entries/base.rb +0 -2
- data/sub/avm/lib/avm/entries/entry.rb +0 -1
- data/sub/avm/lib/avm/entries/jobs/base.rb +0 -2
- data/sub/avm/lib/avm/entries/jobs/with_variables_source.rb +0 -2
- data/sub/avm/lib/avm/file_formats/file_result.rb +0 -1
- data/sub/avm/lib/avm/file_formats/search_formatter.rb +0 -2
- data/sub/avm/lib/avm/file_formats/unknown.rb +0 -2
- data/sub/avm/lib/avm/files/appendable/file_content.rb +0 -1
- data/sub/avm/lib/avm/files/appendable/plain_directory.rb +0 -1
- data/sub/avm/lib/avm/files/appendable/tar_output_command.rb +0 -1
- data/sub/avm/lib/avm/files/appendable/templatized_directory.rb +1 -1
- data/sub/avm/lib/avm/files/appender.rb +0 -2
- data/sub/avm/lib/avm/files/deploy.rb +1 -1
- data/sub/avm/lib/avm/instances/base/auto_values/data.rb +0 -2
- data/sub/avm/lib/avm/instances/base/auto_values/database.rb +0 -2
- data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +0 -4
- data/sub/avm/lib/avm/instances/base/auto_values/source.rb +0 -2
- data/sub/avm/lib/avm/instances/base/dockerizable.rb +0 -2
- data/sub/avm/lib/avm/instances/base/entry_keys.rb +0 -2
- data/sub/avm/lib/avm/instances/base/install.rb +0 -3
- data/sub/avm/lib/avm/instances/base/production.rb +0 -1
- data/sub/avm/lib/avm/instances/base/web.rb +0 -1
- data/sub/avm/lib/avm/instances/base.rb +1 -8
- data/sub/avm/lib/avm/instances/data/files_unit.rb +0 -2
- data/sub/avm/lib/avm/instances/data/package.rb +0 -2
- data/sub/avm/lib/avm/instances/data/unit.rb +0 -3
- data/sub/avm/lib/avm/instances/docker_image.rb +0 -2
- data/sub/avm/lib/avm/instances/entry_keys.rb +0 -3
- data/sub/avm/lib/avm/instances/runner.rb +0 -1
- data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +0 -1
- data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +0 -1
- data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +0 -2
- data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +0 -2
- data/sub/avm/lib/avm/launcher/context/instance_manager.rb +0 -1
- data/sub/avm/lib/avm/launcher/context/settings.rb +0 -2
- data/sub/avm/lib/avm/launcher/context.rb +1 -5
- data/sub/avm/lib/avm/launcher/errors/non_project.rb +0 -2
- data/sub/avm/lib/avm/launcher/instances/base.rb +0 -3
- data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +0 -3
- data/sub/avm/lib/avm/launcher/paths/logical.rb +0 -3
- data/sub/avm/lib/avm/launcher/publish/base.rb +0 -2
- data/sub/avm/lib/avm/registry/application_scms.rb +0 -2
- data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +0 -3
- data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +0 -2
- data/sub/avm/lib/avm/registry/application_stereotypes.rb +0 -3
- data/sub/avm/lib/avm/registry/applications.rb +0 -2
- data/sub/avm/lib/avm/registry/file_formats.rb +0 -3
- data/sub/avm/lib/avm/registry/instances.rb +0 -3
- data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +0 -2
- data/sub/avm/lib/avm/registry/runners.rb +0 -2
- data/sub/avm/lib/avm/registry/scms.rb +0 -2
- data/sub/avm/lib/avm/registry/source_generators.rb +0 -3
- data/sub/avm/lib/avm/registry/sources.rb +0 -2
- data/sub/avm/lib/avm/registry/with_path/cache.rb +0 -2
- data/sub/avm/lib/avm/registry/with_path.rb +0 -2
- data/sub/avm/lib/avm/rspec/launcher_controller.rb +0 -1
- data/sub/avm/lib/avm/rspec/setup/launcher.rb +0 -2
- data/sub/avm/lib/avm/rspec/setup.rb +0 -3
- data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +0 -2
- data/sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb +0 -2
- data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +0 -2
- data/sub/avm/lib/avm/rspec/shared_examples/with_launcher.rb +0 -2
- data/sub/avm/lib/avm/runner_with/file_replacer.rb +0 -2
- data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +13 -3
- data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +0 -2
- data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +0 -2
- data/sub/avm/lib/avm/scms/auto_commit/rules/last.rb +0 -2
- data/sub/avm/lib/avm/scms/auto_commit/rules/manual.rb +0 -2
- data/sub/avm/lib/avm/scms/auto_commit/rules/new.rb +1 -4
- data/sub/avm/lib/avm/scms/auto_commit/rules/nth.rb +0 -2
- data/sub/avm/lib/avm/scms/auto_commit/rules/unique.rb +0 -2
- data/sub/avm/lib/avm/scms/base.rb +0 -2
- data/sub/avm/lib/avm/scms/changed_file.rb +22 -0
- data/sub/avm/lib/avm/scms/null/commit.rb +0 -3
- data/sub/avm/lib/avm/scms/null.rb +0 -2
- data/sub/avm/lib/avm/self/docker_image.rb +0 -2
- data/sub/avm/lib/avm/self/instance.rb +0 -4
- data/sub/avm/lib/avm/source_generators/base.rb +0 -3
- data/sub/avm/lib/avm/source_generators/option_list.rb +0 -2
- data/sub/avm/lib/avm/source_generators/runner.rb +0 -1
- data/sub/avm/lib/avm/sources/base/application.rb +0 -1
- data/sub/avm/lib/avm/sources/base/instance.rb +0 -3
- data/sub/avm/lib/avm/sources/base/sub.rb +0 -2
- data/sub/avm/lib/avm/sources/base/subs.rb +0 -3
- data/sub/avm/lib/avm/sources/base/version_bump.rb +0 -2
- data/sub/avm/lib/avm/sources/base.rb +0 -5
- data/sub/avm/lib/avm/sources/tests/builder.rb +0 -3
- data/sub/avm/lib/avm/sources/tests/performer.rb +0 -2
- data/sub/avm/lib/avm/sources/tests/single.rb +0 -2
- data/sub/avm/lib/avm/version.rb +1 -1
- data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +2 -1
- data/sub/avm/spec/spec_helper.rb +3 -0
- data/sub/avm-git/Gemfile +8 -0
- data/sub/avm-git/avm-git.gemspec +25 -0
- data/sub/avm-git/lib/avm/git/application_scms/base/assert_main_at.rb +44 -0
- data/sub/avm-git/lib/avm/git/application_scms/base.rb +18 -0
- data/sub/avm-git/lib/avm/git/application_scms.rb +9 -0
- data/sub/avm-git/lib/avm/git/commit/class_methods.rb +29 -0
- data/sub/avm-git/lib/avm/git/commit/diff_tree_line.rb +32 -0
- data/sub/avm-git/lib/avm/git/commit/file.rb +42 -0
- data/sub/avm-git/lib/avm/git/commit.rb +57 -0
- data/sub/avm-git/lib/avm/git/issue/complete/commits.rb +40 -0
- data/sub/avm-git/lib/avm/git/issue/complete/git_subrepos.rb +20 -0
- data/sub/avm-git/lib/avm/git/issue/complete/local_branch.rb +59 -0
- data/sub/avm-git/lib/avm/git/issue/complete/local_tag.rb +37 -0
- data/sub/avm-git/lib/avm/git/issue/complete/push.rb +60 -0
- data/sub/avm-git/lib/avm/git/issue/complete/remote.rb +33 -0
- data/sub/avm-git/lib/avm/git/issue/complete/test.rb +34 -0
- data/sub/avm-git/lib/avm/git/issue/complete/tracker.rb +21 -0
- data/sub/avm-git/lib/avm/git/issue/complete/validation.rb +36 -0
- data/sub/avm-git/lib/avm/git/issue/complete/validations.rb +49 -0
- data/sub/avm-git/lib/avm/git/issue/complete/working_tree.rb +19 -0
- data/sub/avm-git/lib/avm/git/issue/complete.rb +66 -0
- data/sub/avm-git/lib/avm/git/issue.rb +10 -0
- data/sub/avm-git/lib/avm/git/launcher/base/class_methods.rb +28 -0
- data/sub/avm-git/lib/avm/git/launcher/base/dirty_files.rb +21 -0
- data/sub/avm-git/lib/avm/git/launcher/base/remotes.rb +37 -0
- data/sub/avm-git/lib/avm/git/launcher/base/subrepo.rb +42 -0
- data/sub/avm-git/lib/avm/git/launcher/base/underlying.rb +54 -0
- data/sub/avm-git/lib/avm/git/launcher/base.rb +81 -0
- data/sub/avm-git/lib/avm/git/launcher/error.rb +13 -0
- data/sub/avm-git/lib/avm/git/launcher/mirror_update.rb +36 -0
- data/sub/avm-git/lib/avm/git/launcher/publish_base.rb +127 -0
- data/sub/avm-git/lib/avm/git/launcher/remote.rb +53 -0
- data/sub/avm-git/lib/avm/git/launcher/sub_warp_base.rb +30 -0
- data/sub/avm-git/lib/avm/git/launcher/warp_base.rb +63 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/local_project_mixin.rb +16 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/publish.rb +13 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git/warp.rb +25 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git.rb +22 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/publish.rb +29 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo/warp.rb +82 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subrepo.rb +32 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/publish.rb +12 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree/warp.rb +29 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/git_subtree.rb +47 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes/provider.rb +17 -0
- data/sub/avm-git/lib/avm/git/launcher_stereotypes.rb +9 -0
- data/sub/avm-git/lib/avm/git/organize/reference_update.rb +32 -0
- data/sub/avm-git/lib/avm/git/organize/repository.rb +74 -0
- data/sub/avm-git/lib/avm/git/organize.rb +9 -0
- data/sub/avm-git/lib/avm/git/revision_test.rb +102 -0
- data/sub/avm-git/lib/avm/git/runners/base/commit.rb +96 -0
- data/sub/avm-git/lib/avm/git/runners/base/deploy.rb +108 -0
- data/sub/avm-git/lib/avm/git/runners/base/dirty_files.rb +42 -0
- data/sub/avm-git/lib/avm/git/runners/base/organize.rb +72 -0
- data/sub/avm-git/lib/avm/git/runners/base/revisions_test.rb +63 -0
- data/sub/avm-git/lib/avm/git/runners/base/subrepo/check.rb +45 -0
- data/sub/avm-git/lib/avm/git/runners/base/subrepo/clone.rb +80 -0
- data/sub/avm-git/lib/avm/git/runners/base/subrepo/fix.rb +69 -0
- data/sub/avm-git/lib/avm/git/runners/base/subrepo.rb +17 -0
- data/sub/avm-git/lib/avm/git/runners/base.rb +40 -0
- data/sub/avm-git/lib/avm/git/runners.rb +9 -0
- data/sub/avm-git/lib/avm/git/scms/git/branch.rb +28 -0
- data/sub/avm-git/lib/avm/git/scms/git/branches.rb +17 -0
- data/sub/avm-git/lib/avm/git/scms/git/change_tracker.rb +34 -0
- data/sub/avm-git/lib/avm/git/scms/git/changed_file.rb +25 -0
- data/sub/avm-git/lib/avm/git/scms/git/changed_files.rb +21 -0
- data/sub/avm-git/lib/avm/git/scms/git/commit/deploy.rb +37 -0
- data/sub/avm-git/lib/avm/git/scms/git/commit/deploy_methods.rb +24 -0
- data/sub/avm-git/lib/avm/git/scms/git/commit.rb +64 -0
- data/sub/avm-git/lib/avm/git/scms/git/commit_dirty.rb +32 -0
- data/sub/avm-git/lib/avm/git/scms/git/commits.rb +44 -0
- data/sub/avm-git/lib/avm/git/scms/git/interval.rb +28 -0
- data/sub/avm-git/lib/avm/git/scms/git/milestones.rb +18 -0
- data/sub/avm-git/lib/avm/git/scms/git/remote.rb +18 -0
- data/sub/avm-git/lib/avm/git/scms/git/remotes.rb +29 -0
- data/sub/avm-git/lib/avm/git/scms/git/run_commit.rb +54 -0
- data/sub/avm-git/lib/avm/git/scms/git.rb +46 -0
- data/sub/avm-git/lib/avm/git/scms/git_sub_base/changed_file.rb +19 -0
- data/sub/avm-git/lib/avm/git/scms/git_sub_base/commit.rb +23 -0
- data/sub/avm-git/lib/avm/git/scms/git_sub_base/interval.rb +23 -0
- data/sub/avm-git/lib/avm/git/scms/git_sub_base.rb +30 -0
- data/sub/avm-git/lib/avm/git/scms/git_subrepo.rb +33 -0
- data/sub/avm-git/lib/avm/git/scms/git_subtree.rb +29 -0
- data/sub/avm-git/lib/avm/git/scms/provider.rb +16 -0
- data/sub/avm-git/lib/avm/git/scms.rb +9 -0
- data/sub/avm-git/lib/avm/git/subrepo_check/parent.rb +48 -0
- data/sub/avm-git/lib/avm/git/subrepo_check/remote.rb +86 -0
- data/sub/avm-git/lib/avm/git/subrepo_check/show_result.rb +30 -0
- data/sub/avm-git/lib/avm/git/subrepo_check.rb +36 -0
- data/sub/avm-git/lib/avm/git/subrepo_checks.rb +57 -0
- data/sub/avm-git/lib/avm/git/vendor/github.rb +20 -0
- data/sub/avm-git/lib/avm/git/vendor.rb +9 -0
- data/sub/avm-git/lib/avm/git/version.rb +7 -0
- data/sub/avm-git/lib/avm/git.rb +16 -0
- data/sub/avm-git/locale/en.yml +6 -0
- data/sub/avm-git/locale/pt-BR.yml +6 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec.rb +13 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.source.out +1 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.source.out +1 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.source.out +1 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.source.out +2 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
- data/sub/avm-git/spec/lib/avm/git/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
- data/sub/avm-git/spec/lib/avm/git/commit_spec.rb +56 -0
- data/sub/avm-git/spec/lib/avm/git/launcher/base_spec.rb +45 -0
- data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec.rb +83 -0
- data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec_files/config.yml +5 -0
- data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/publish_spec_settings.yml +6 -0
- data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec.rb +53 -0
- data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec_files/config.yml +3 -0
- data/sub/avm-git/spec/lib/avm/git/launcher_stereotypes/git_subrepo/warp_spec_settings.yml +6 -0
- data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec.rb +126 -0
- data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec_files/append1/stub3.txt.template +1 -0
- data/sub/avm-git/spec/lib/avm/git/runners/base/deploy_spec_files/append2/stub4.txt +1 -0
- data/sub/avm-git/spec/lib/avm/git/scms/git/commit/deploy_spec.rb +92 -0
- data/sub/avm-git/spec/lib/avm/git/scms/git_spec.rb +8 -0
- data/sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb +8 -0
- data/sub/avm-git/spec/lib/avm/git/vendor/github_spec.rb +23 -0
- data/sub/avm-git/spec/rubocop_spec.rb +3 -0
- data/sub/avm-git/spec/spec_helper.rb +5 -0
- data/sub/avm-tools/avm-tools.gemspec +3 -3
- data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
- data/sub/avm-tools/spec/spec_helper.rb +2 -0
- data/sub/eac_git/Gemfile +8 -0
- data/sub/eac_git/eac_git.gemspec +20 -0
- data/sub/eac_git/lib/eac_git/executables.rb +45 -0
- data/sub/eac_git/lib/eac_git/local/branch.rb +45 -0
- data/sub/eac_git/lib/eac_git/local/changed_file.rb +47 -0
- data/sub/eac_git/lib/eac_git/local/commit/archive.rb +17 -0
- data/sub/eac_git/lib/eac_git/local/commit/changed_file.rb +43 -0
- data/sub/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +32 -0
- data/sub/eac_git/lib/eac_git/local/commit.rb +71 -0
- data/sub/eac_git/lib/eac_git/local/dirty_files.rb +26 -0
- data/sub/eac_git/lib/eac_git/local/log.rb +14 -0
- data/sub/eac_git/lib/eac_git/local/remote/push.rb +33 -0
- data/sub/eac_git/lib/eac_git/local/remote.rb +47 -0
- data/sub/eac_git/lib/eac_git/local/remotes.rb +17 -0
- data/sub/eac_git/lib/eac_git/local/subrepo/config.rb +40 -0
- data/sub/eac_git/lib/eac_git/local/subrepo.rb +46 -0
- data/sub/eac_git/lib/eac_git/local.rb +124 -0
- data/sub/eac_git/lib/eac_git/remote.rb +20 -0
- data/sub/eac_git/lib/eac_git/remote_like/ls_result.rb +18 -0
- data/sub/eac_git/lib/eac_git/remote_like.rb +30 -0
- data/sub/eac_git/lib/eac_git/rspec/setup.rb +20 -0
- data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/directory.rb +35 -0
- data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/file.rb +21 -0
- data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/fs_object.rb +25 -0
- data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo/repository.rb +30 -0
- data/sub/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb +28 -0
- data/sub/eac_git/lib/eac_git/rspec.rb +7 -0
- data/sub/eac_git/lib/eac_git/version.rb +5 -0
- data/sub/eac_git/lib/eac_git.rb +9 -0
- data/sub/eac_git/spec/lib/eac_git/executables_spec.rb +11 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +11 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +1 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +1 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +1 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +2 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
- data/sub/eac_git/spec/lib/eac_git/local/commit_spec.rb +56 -0
- data/sub/eac_git/spec/lib/eac_git/local/dirty_files_spec.rb +18 -0
- data/sub/eac_git/spec/rubocop_spec.rb +3 -0
- data/sub/eac_git/spec/spec_helper.rb +5 -0
- data/sub/eac_git/vendor/git-subrepo/Changes +110 -0
- data/sub/eac_git/vendor/git-subrepo/Intro.pod +509 -0
- data/sub/eac_git/vendor/git-subrepo/License +21 -0
- data/sub/eac_git/vendor/git-subrepo/Makefile +82 -0
- data/sub/eac_git/vendor/git-subrepo/Meta +28 -0
- data/sub/eac_git/vendor/git-subrepo/ReadMe.pod +698 -0
- data/sub/eac_git/vendor/git-subrepo/doc/comparison.swim +35 -0
- data/sub/eac_git/vendor/git-subrepo/doc/git-subrepo.swim +608 -0
- data/sub/eac_git/vendor/git-subrepo/doc/intro-to-subrepo.swim +387 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Changes +15 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/License +21 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Makefile +45 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/Meta +28 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/ReadMe.pod +77 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/bin/bash+ +43 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +61 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +92 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +134 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +134 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/base.t +12 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/fcopy.t +22 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/bar.bash +3 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/lib/foo/foo.bash +3 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +18 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +23 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/test.bash +70 -0
- data/sub/eac_git/vendor/git-subrepo/ext/bashplus/test/use.t +19 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Changes +15 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/License +21 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Makefile +20 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/Meta +30 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +115 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +89 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +15 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +21 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +45 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +28 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +77 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +43 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +61 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +92 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +134 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +134 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +12 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +22 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/bar.bash +3 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/lib/foo/foo.bash +3 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +18 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +23 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/test.bash +70 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +19 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +15 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +21 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +37 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +28 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +66 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +48 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +153 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +119 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +13 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/done.t +10 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +20 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +15 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +9 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/pass.t +9 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/plan.t +10 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/skip_all.t +20 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +13 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/bail.t +14 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail.t +7 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/fail_fast.t +12 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-init.t +8 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/test/skip-all-plan.t +9 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +95 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +173 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/fail.t +20 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/more.t +20 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/pass.t +9 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/setup +8 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/skip_all.t +11 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +12 -0
- data/sub/eac_git/vendor/git-subrepo/ext/test-more-bash/test/test/skip_all.t +10 -0
- data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo +1903 -0
- data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/bash+.bash +1 -0
- data/sub/eac_git/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +339 -0
- data/sub/eac_git/vendor/git-subrepo/man/man1/git-subrepo.1 +743 -0
- data/sub/eac_git/vendor/git-subrepo/note/0.4.0 +12 -0
- data/sub/eac_git/vendor/git-subrepo/note/AllGitCmds +148 -0
- data/sub/eac_git/vendor/git-subrepo/note/Cases +32 -0
- data/sub/eac_git/vendor/git-subrepo/note/Commands +33 -0
- data/sub/eac_git/vendor/git-subrepo/note/Dags +199 -0
- data/sub/eac_git/vendor/git-subrepo/note/Gists +7 -0
- data/sub/eac_git/vendor/git-subrepo/note/Links +25 -0
- data/sub/eac_git/vendor/git-subrepo/note/Plugins +10 -0
- data/sub/eac_git/vendor/git-subrepo/note/Spec +39 -0
- data/sub/eac_git/vendor/git-subrepo/note/Story1 +57 -0
- data/sub/eac_git/vendor/git-subrepo/note/ToDo +55 -0
- data/sub/eac_git/vendor/git-subrepo/note/design.swim +137 -0
- data/sub/eac_git/vendor/git-subrepo/note/design2.swim +85 -0
- data/sub/eac_git/vendor/git-subrepo/note/init-test +38 -0
- data/sub/eac_git/vendor/git-subrepo/note/pull-dance.txt +18 -0
- data/sub/eac_git/vendor/git-subrepo/note/recreate-rebase-conflict.sh +56 -0
- data/sub/eac_git/vendor/git-subrepo/note/subtree-rebase-fail-example/test.bash +29 -0
- data/sub/eac_git/vendor/git-subrepo/note/test-subrepo-push.sh +69 -0
- data/sub/eac_git/vendor/git-subrepo/note/test.sh +58 -0
- data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-completion.pl +210 -0
- data/sub/eac_git/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +89 -0
- data/sub/eac_git/vendor/git-subrepo/share/completion.bash +42 -0
- data/sub/eac_git/vendor/git-subrepo/share/enable-completion.sh +50 -0
- data/sub/eac_git/vendor/git-subrepo/share/git-completion.bash +2738 -0
- data/sub/eac_git/vendor/git-subrepo/share/zsh-completion/_git-subrepo +81 -0
- data/sub/eac_git/vendor/git-subrepo/test/branch-all.t +41 -0
- data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list-one-path.t +43 -0
- data/sub/eac_git/vendor/git-subrepo/test/branch-rev-list.t +47 -0
- data/sub/eac_git/vendor/git-subrepo/test/branch.t +52 -0
- data/sub/eac_git/vendor/git-subrepo/test/clean.t +43 -0
- data/sub/eac_git/vendor/git-subrepo/test/clone-annotated-tag.t +45 -0
- data/sub/eac_git/vendor/git-subrepo/test/clone.t +107 -0
- data/sub/eac_git/vendor/git-subrepo/test/compile.t +19 -0
- data/sub/eac_git/vendor/git-subrepo/test/config.t +58 -0
- data/sub/eac_git/vendor/git-subrepo/test/encode.t +91 -0
- data/sub/eac_git/vendor/git-subrepo/test/error.t +171 -0
- data/sub/eac_git/vendor/git-subrepo/test/fetch.t +43 -0
- data/sub/eac_git/vendor/git-subrepo/test/gitignore.t +61 -0
- data/sub/eac_git/vendor/git-subrepo/test/init.t +64 -0
- data/sub/eac_git/vendor/git-subrepo/test/issue29.t +98 -0
- data/sub/eac_git/vendor/git-subrepo/test/issue95.t +98 -0
- data/sub/eac_git/vendor/git-subrepo/test/issue96.t +96 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-all.t +38 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-merge.t +113 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-message.t +88 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-new-branch.t +58 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-ours.t +90 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-theirs.t +82 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-twice.t +44 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull-worktree.t +40 -0
- data/sub/eac_git/vendor/git-subrepo/test/pull.t +99 -0
- data/sub/eac_git/vendor/git-subrepo/test/push-after-init.t +51 -0
- data/sub/eac_git/vendor/git-subrepo/test/push-force.t +56 -0
- data/sub/eac_git/vendor/git-subrepo/test/push-new-branch.t +61 -0
- data/sub/eac_git/vendor/git-subrepo/test/push-no-changes.t +29 -0
- data/sub/eac_git/vendor/git-subrepo/test/push-squash.t +56 -0
- data/sub/eac_git/vendor/git-subrepo/test/push.t +176 -0
- data/sub/eac_git/vendor/git-subrepo/test/reclone.t +45 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/HEAD +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/config +4 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/1f/0c4b264caed0126814a0ede851a1e0b4e16ae6 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/87/46903fdb1b9c2101377880125917c2e05b4d69 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/c6/76c57b6576743fa56278527aa60ebd2e202a7c +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/heads/master +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/bar/refs/tags/A +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/foo/HEAD +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/foo/config +4 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/a0/f4cdaaf533a936296cdebbed8206c3b9ededa8 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/foo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/foo/refs/heads/master +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/HEAD +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/config +5 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/11/523f5dcf03b4c89b592dc8a3d0308f68da2386 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/14/2addf8ec5f37334e837440122c62f2c68a29ad +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09 +2 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/3e/4cb596066dce63ba4d047abddb677389b65e19 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/4b/6e53022e7a04f07887697e4f3d7c377fd9822b +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/5e/c0c28e1b806f25efdca18fcf7a74b49c3755bd +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/75/fa6584e748f57eff06eebdc55e9ac21d4fcbf2 +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/80/2d5edbd5e1cb7fca82b5bd38e7c8a0a496fb20 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/95/e1f2df3f4d5f3d7a60588c25a7ca8a913d3c2a +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/b1/5f4a7666baf40d949548ead946a3370e273479 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882 +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/c8/b0bffbc405ef3fad7354ff833fbec36d67ddfa +3 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/dd/8bdb934ec848137f011fe423b185505c343626 +2 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/e2/9be58c767cfeb27235c995d293a7d71aac0135 +2 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/ee/1224401fc6aac595145fa727dcf6706ac8aec1 +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/objects/f1/cc1a657b2e805c400f5dcaaa76bd29c6178b1b +0 -0
- data/sub/eac_git/vendor/git-subrepo/test/repo/init/refs/heads/master +1 -0
- data/sub/eac_git/vendor/git-subrepo/test/setup +205 -0
- data/sub/eac_git/vendor/git-subrepo/test/status.t +68 -0
- data/sub/eac_git/vendor/git-subrepo/test/submodule.t +45 -0
- metadata +364 -16
@@ -0,0 +1,137 @@
|
|
1
|
+
git-subrepo Design
|
2
|
+
==================
|
3
|
+
|
4
|
+
How the subrepo commands should work.
|
5
|
+
|
6
|
+
Glossary:
|
7
|
+
|
8
|
+
- `subrepo` :: An external repository integrated as a repo subdirectory
|
9
|
+
- `subdir` :: The directory in the work tree where the subrepo lives
|
10
|
+
- `upstream` :: The remote repo that the subrepo is tracking
|
11
|
+
- `local` :: The local parts of the subrepo
|
12
|
+
- `.gitrepo` :: The subrepo state file
|
13
|
+
- `remote` :: The subrepo url
|
14
|
+
- `branch` :: The remote branch the subrepo is tracking
|
15
|
+
- `commit` :: The upstream commit id that we last synced to
|
16
|
+
- `former` :: The local commit that we last synced to
|
17
|
+
|
18
|
+
== clone
|
19
|
+
|
20
|
+
This is the action that adds a new subrepo. It feels very much like a clone,
|
21
|
+
so we call it that.
|
22
|
+
|
23
|
+
Usages:
|
24
|
+
|
25
|
+
# Add a subrepo into a subdir (track remote HEAD branch):
|
26
|
+
git subrepo clone <remote> <subdir>
|
27
|
+
# Guess subdir from remote url:
|
28
|
+
git subrepo clone <remote>
|
29
|
+
# Use a named branch instead of the remote HEAD:
|
30
|
+
git subrepo clone <remote> [<subdir>] -b <branch>
|
31
|
+
|
32
|
+
Steps:
|
33
|
+
|
34
|
+
* Assert clean, and chdir to root (adjusting subdir)
|
35
|
+
* Determine the remote HEAD
|
36
|
+
* Else error, branch (-b) needed
|
37
|
+
* Fetch the remote branch commits
|
38
|
+
* Subtree merge the remote subrepo history into the subdir
|
39
|
+
* Squash the history to a single commit
|
40
|
+
* Merge the subtree commit into the mainline HEAD
|
41
|
+
* Add a .gitrepo file to the subdir
|
42
|
+
* Amend the .gitrepo into the HEAD merge commit
|
43
|
+
* Create a branch .git/refs/subrepo/remote/<subdir>
|
44
|
+
* Add a remote called subrepo/<subdir>
|
45
|
+
|
46
|
+
== pull
|
47
|
+
|
48
|
+
Fetch and merge the remote content. This could be a single operation, or may
|
49
|
+
require a manual process: (see checkout)
|
50
|
+
|
51
|
+
Usages:
|
52
|
+
|
53
|
+
# Fetch and rebase subdir/subrepo:
|
54
|
+
git subrepo pull --rebase subdir
|
55
|
+
# Strategies: --rebase --ours --theirs --merge (recursive):
|
56
|
+
git subrepo pull --<merge-strategy> subdir
|
57
|
+
# Pull all the subrepos:
|
58
|
+
git subrepo pull --<strategy> --all
|
59
|
+
# Change the tracking branch and pull it:
|
60
|
+
git subrepo pull --<strategy> -b <branch> <subdir>
|
61
|
+
# Pull in the hand merged branch:
|
62
|
+
# git subrepo pull <subdir>
|
63
|
+
|
64
|
+
Steps:
|
65
|
+
|
66
|
+
* Assert clean, and chdir to root (adjusting subdir)
|
67
|
+
* Fetch the remote branch content
|
68
|
+
* Update remotes and the refs in .git/
|
69
|
+
* The might not be the same repo that did the clone
|
70
|
+
* If not hand merged
|
71
|
+
* Create a branch called subrepo/<subdir>
|
72
|
+
* Checkout the new branch
|
73
|
+
* Apply the merge strategy to the remote branch
|
74
|
+
* If not clean
|
75
|
+
* Error message
|
76
|
+
* Reset to starting state
|
77
|
+
* Subtree merge the subrepo/<subdir> branch into repo
|
78
|
+
git subrepo clone <remote> <subdir>
|
79
|
+
* Squash the upstream history
|
80
|
+
* Merge the subtree into mainline
|
81
|
+
* Update the .gitrepo file
|
82
|
+
* Amend .gitrepo into HEAD
|
83
|
+
* Delete the subrepo/<subdir> branch
|
84
|
+
|
85
|
+
== push
|
86
|
+
|
87
|
+
Push a merged subrepo history to the remote. This could be a single operation,
|
88
|
+
or may require a manual process.
|
89
|
+
|
90
|
+
Usages:
|
91
|
+
|
92
|
+
# Fetch, apply strategy, push to remote:
|
93
|
+
git subrepo push <subdir>
|
94
|
+
# Do all subrepos:
|
95
|
+
git subrepo push --all
|
96
|
+
|
97
|
+
Steps:
|
98
|
+
|
99
|
+
* Assert clean, and chdir to root (adjusting subdir)
|
100
|
+
* Update remotes and the refs in .git/
|
101
|
+
* Fetch the remote branch content
|
102
|
+
* Make sure we have pulled the latest remote changes
|
103
|
+
* Checkout subrepo/<subdir> branch
|
104
|
+
* Rebase the local change s on top
|
105
|
+
* Push it to subrepo/<subdir> remote
|
106
|
+
|
107
|
+
== checkout
|
108
|
+
|
109
|
+
Create a branch of the local changes to the subrepo and checkout it. Also
|
110
|
+
fetch the remote tracking branch, so it can can be used for merges. This
|
111
|
+
command is used to do a pull/merge by hand. After you merge, use the `pull`
|
112
|
+
command to finish up.
|
113
|
+
|
114
|
+
Usages:
|
115
|
+
|
116
|
+
# Checkout a subdir/subrepo
|
117
|
+
git checkout <subdir>
|
118
|
+
|
119
|
+
Steps:
|
120
|
+
|
121
|
+
* Assert clean, and chdir to root (adjusting subdir)
|
122
|
+
* Assert repo is on a branch
|
123
|
+
* Update remotes and the refs in .git/
|
124
|
+
* Fetch the remote branch content
|
125
|
+
* Create a branch of local subrepo changes subrepo/local/<subdir>
|
126
|
+
* Checkout the new branch
|
127
|
+
|
128
|
+
== status
|
129
|
+
|
130
|
+
Give a full status of specific subrepos or all of them.
|
131
|
+
|
132
|
+
Usages:
|
133
|
+
|
134
|
+
# Get status for all subrepos:
|
135
|
+
git subrepo status
|
136
|
+
# Get status for specific subrepos:
|
137
|
+
git subrepo status <subdir> [<subdir> ...]
|
@@ -0,0 +1,85 @@
|
|
1
|
+
git-subrepo Design
|
2
|
+
==================
|
3
|
+
|
4
|
+
This document details wow the git-subrepo commands should work.
|
5
|
+
|
6
|
+
Glossary:
|
7
|
+
|
8
|
+
- `subrepo` :: An external repository integrated as a repo subdirectory
|
9
|
+
- `subdir` :: The directory in the work tree where the subrepo lives
|
10
|
+
- `upstream` :: The remote repo that the subrepo is tracking
|
11
|
+
- `local` :: The local parts of the subrepo
|
12
|
+
- `.gitrepo` :: The subrepo state file
|
13
|
+
- `remote` :: The subrepo url
|
14
|
+
- `branch` :: The remote branch the subrepo is tracking
|
15
|
+
- `commit` :: The upstream commit id that we last synced to
|
16
|
+
- `former` :: The local commit that we last synced to
|
17
|
+
|
18
|
+
= Commands and usages:
|
19
|
+
|
20
|
+
There are 4 main commands:
|
21
|
+
|
22
|
+
* git subrepo clone
|
23
|
+
* git subrepo pull
|
24
|
+
* git subrepo push
|
25
|
+
* git subrepo checkout
|
26
|
+
|
27
|
+
# Clone forms:
|
28
|
+
git subrepo clone git@github.com:you/foo.git
|
29
|
+
git subrepo clone git@github.com:you/foo.git ext/subfoo
|
30
|
+
git subrepo clone git@github.com:you/foo.git -b alternate-branch
|
31
|
+
|
32
|
+
# Single command pull:
|
33
|
+
git subrepo pull --rebase ext/foo
|
34
|
+
git subrepo pull --merge ext/foo -b remote-branch
|
35
|
+
git subrepo pull --ours ext/foo -B remote-branch # change .gitrepo
|
36
|
+
git subrepo pull --rebase --all
|
37
|
+
|
38
|
+
# Manual pull:
|
39
|
+
git subrepo checkout ext/foo
|
40
|
+
git rebase subrepo/remote/ext/foo subrepo/ext/foo
|
41
|
+
make test
|
42
|
+
git subrepo pull ext/foo --continue
|
43
|
+
|
44
|
+
# Push forms:
|
45
|
+
git subrepo push ext/foo
|
46
|
+
git subrepo push ext/foo -b remote-branch
|
47
|
+
git subrepo push ext/foo -B remote-branch
|
48
|
+
git subrepo push --all
|
49
|
+
|
50
|
+
# Manual push:
|
51
|
+
git subrepo checkout ext/foo --rebase
|
52
|
+
<maybe rewrite commit info>
|
53
|
+
make test
|
54
|
+
git subrepo push ext/foo --continue
|
55
|
+
|
56
|
+
# Checkout forms:
|
57
|
+
git subrepo checkout ext/foo
|
58
|
+
git subrepo checkout ext/foo --<merge-straegy>
|
59
|
+
git subrepo checkout ext/foo --fetch
|
60
|
+
git subrepo checkout -b create-local-branch-name
|
61
|
+
git subrepo checkout --all
|
62
|
+
|
63
|
+
= Command Logic
|
64
|
+
|
65
|
+
This section goes over all the things that a command needs to do:
|
66
|
+
|
67
|
+
== Setup
|
68
|
+
|
69
|
+
There are certain steps that each command must do first:
|
70
|
+
|
71
|
+
* Assert that the system commands and git version are correct.
|
72
|
+
* Assert that the repository is in a clean state.
|
73
|
+
* Assert that the repo is on a branch.
|
74
|
+
* Assert that the current dir is top level of repo.
|
75
|
+
* Assert the command arguments are valid.
|
76
|
+
* Assert the subdir is a valid subrepo dir.
|
77
|
+
* For `clone` make sure subdir does not exist yet.
|
78
|
+
* Read the .gitrepo file (not for clone).
|
79
|
+
* For `clone`, make sure we know what upstream branch to use.
|
80
|
+
* Note the starting point (branch and commit).
|
81
|
+
|
82
|
+
== Clone command:
|
83
|
+
|
84
|
+
* Fetch upstream content for our tracking branch.
|
85
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -ex
|
4
|
+
cat $0 # Show this script in the output
|
5
|
+
|
6
|
+
REPO=${1:-ingydotnet/djson-pm}
|
7
|
+
REPODIR="${REPO#*/}"
|
8
|
+
SUBDIR=${2:-test}
|
9
|
+
SUBREPO=$REPO-$SUBDIR
|
10
|
+
SUBREPODIR="${SUBREPO#*/}"
|
11
|
+
|
12
|
+
git hub repo-delete "$SUBREPO" || true
|
13
|
+
rm -fr "$REPODIR"
|
14
|
+
git hub clone "$REPO"
|
15
|
+
(
|
16
|
+
exit
|
17
|
+
cd "$REPODIR"
|
18
|
+
git subrepo init test -r "git@github.com:$SUBREPO" # -b foo
|
19
|
+
git hub repo-new "$SUBREPO"
|
20
|
+
git hub repo "$SUBREPO"
|
21
|
+
cat "$SUBDIR/.gitrepo"
|
22
|
+
git subrepo push "$SUBDIR"
|
23
|
+
git subrepo status "$SUBDIR"
|
24
|
+
git hub clone "$SUBREPO"
|
25
|
+
[[ -e "$SUBREPODIR/decode.t" ]] && echo PASS || echo FAIL
|
26
|
+
)
|
27
|
+
(
|
28
|
+
cd "$REPODIR"
|
29
|
+
git subrepo init test
|
30
|
+
git hub repo-new "$SUBREPO"
|
31
|
+
git hub repo "$SUBREPO"
|
32
|
+
cat "$SUBDIR/.gitrepo"
|
33
|
+
git subrepo push -u "$SUBDIR" -r "git@github.com:$SUBREPO" -b foo
|
34
|
+
git subrepo status "$SUBDIR"
|
35
|
+
git hub clone "$SUBREPO"
|
36
|
+
[[ -e "$SUBREPODIR/decode.t" ]] && echo PASS || echo FAIL
|
37
|
+
bash -i
|
38
|
+
)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
== Pull Dancing
|
2
|
+
|
3
|
+
(
|
4
|
+
git sr pull --rebase ext/bar
|
5
|
+
)
|
6
|
+
|
7
|
+
(
|
8
|
+
git sr checkout ext/bar --rebase
|
9
|
+
make test
|
10
|
+
git sr pull --continue
|
11
|
+
)
|
12
|
+
|
13
|
+
(
|
14
|
+
git sr checkout ext/bar
|
15
|
+
git rebase subrepo/remote/ext/bar
|
16
|
+
make test
|
17
|
+
git sr pull --continue
|
18
|
+
)
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
set -x
|
5
|
+
|
6
|
+
# Make a directory to work in:
|
7
|
+
{
|
8
|
+
ROOT=${BASH_SOURCE%.sh}
|
9
|
+
[ -n "$ROOT" ] || exit 1
|
10
|
+
rm -fr "$ROOT"
|
11
|
+
mkdir "$ROOT"
|
12
|
+
}
|
13
|
+
|
14
|
+
(
|
15
|
+
cd "$ROOT"
|
16
|
+
|
17
|
+
# Start a new repo:
|
18
|
+
git init
|
19
|
+
|
20
|
+
# Make an empty file called `file`:
|
21
|
+
touch file
|
22
|
+
git add file
|
23
|
+
|
24
|
+
# Make 3 commits to `file`:
|
25
|
+
for n in {1..3}; do
|
26
|
+
echo "Line $n" >> file
|
27
|
+
git commit -a -m "Commit #$n"
|
28
|
+
done
|
29
|
+
|
30
|
+
# Now `file` has 3 lines.
|
31
|
+
|
32
|
+
# Make a new branch with one commit where the file has 3 lines:
|
33
|
+
git checkout --orphan subrepo-fake
|
34
|
+
git commit -a -m 'Initial commit on subrepo-fake branch'
|
35
|
+
|
36
|
+
# Return to master and lop off the last commit, so that the `file` has 2
|
37
|
+
# lines (and 2 commits):
|
38
|
+
git checkout master
|
39
|
+
git reset --hard HEAD^
|
40
|
+
|
41
|
+
# Now we rebase like `git subrepo push` does where master is the upstream
|
42
|
+
# with 2 commits, and `subrepo-fake` is our fake subrepo branch with one
|
43
|
+
# commit:
|
44
|
+
git rebase master subrepo-fake || true
|
45
|
+
|
46
|
+
# Command fails on conflict but `|| true` prevents `set -e` from stopping
|
47
|
+
# here.
|
48
|
+
|
49
|
+
# Show the current branch status:
|
50
|
+
git status
|
51
|
+
|
52
|
+
# Show the rebase conflict:
|
53
|
+
cat file
|
54
|
+
|
55
|
+
# This is exactly what is happening with a `git subrepo push`.
|
56
|
+
)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -ex
|
4
|
+
|
5
|
+
rm -fr repo{1,2,3}
|
6
|
+
mkdir repo{1,2}
|
7
|
+
(
|
8
|
+
cd repo1/
|
9
|
+
git init
|
10
|
+
touch foo
|
11
|
+
git add foo
|
12
|
+
git commit -m "First commit"
|
13
|
+
)
|
14
|
+
(
|
15
|
+
cd repo2
|
16
|
+
git init
|
17
|
+
touch bar
|
18
|
+
git add bar
|
19
|
+
git commit -m "add bar"
|
20
|
+
)
|
21
|
+
git clone repo1 repo3
|
22
|
+
(
|
23
|
+
cd repo3/
|
24
|
+
git subrepo clone ../repo2 subrepo
|
25
|
+
bash
|
26
|
+
git rebase -i HEAD^
|
27
|
+
git log -p
|
28
|
+
ls
|
29
|
+
)
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -ex
|
4
|
+
|
5
|
+
# Make a directory to work in:
|
6
|
+
{
|
7
|
+
ROOT=${BASH_SOURCE%.sh}
|
8
|
+
[ -n "$ROOT" ] || exit 1
|
9
|
+
rm -fr "$ROOT"
|
10
|
+
mkdir "$ROOT"
|
11
|
+
}
|
12
|
+
|
13
|
+
(
|
14
|
+
cd "$ROOT"
|
15
|
+
|
16
|
+
# Create "bare" repos to act as pushable upstreams
|
17
|
+
git init --bare parent-upstream
|
18
|
+
git init --bare child-upstream
|
19
|
+
|
20
|
+
# Clone the upstreams into local repos
|
21
|
+
git clone parent-upstream parent
|
22
|
+
git clone child-upstream child
|
23
|
+
|
24
|
+
(
|
25
|
+
cd parent
|
26
|
+
echo 'Initial parent commit' > parent.txt
|
27
|
+
git add parent.txt
|
28
|
+
git commit -m 'initial parent commit'
|
29
|
+
git push
|
30
|
+
)
|
31
|
+
|
32
|
+
(
|
33
|
+
cd child
|
34
|
+
echo 'Initial child commit' > child.txt
|
35
|
+
git add child.txt
|
36
|
+
git commit -m 'Initial child commit'
|
37
|
+
git push
|
38
|
+
)
|
39
|
+
|
40
|
+
(
|
41
|
+
cd parent
|
42
|
+
git subrepo clone ../child-upstream childrepo
|
43
|
+
)
|
44
|
+
|
45
|
+
(
|
46
|
+
cd child
|
47
|
+
echo 'Commit from child' >> child.txt
|
48
|
+
git commit -a -m 'commit from child'
|
49
|
+
git push
|
50
|
+
)
|
51
|
+
|
52
|
+
(
|
53
|
+
cd parent
|
54
|
+
git subrepo pull childrepo
|
55
|
+
)
|
56
|
+
|
57
|
+
(
|
58
|
+
cd parent
|
59
|
+
echo 'Commit from parent for pushing' >> childrepo/child.txt
|
60
|
+
echo 'Commit from parent for pushing' >> parent.txt
|
61
|
+
git commit -a -m 'Commit from parent for pushing'
|
62
|
+
git push
|
63
|
+
)
|
64
|
+
|
65
|
+
(
|
66
|
+
cd parent
|
67
|
+
git subrepo push childrepo -d || bash -i
|
68
|
+
)
|
69
|
+
)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -x
|
4
|
+
|
5
|
+
# Take some random github repo
|
6
|
+
repo=${1:-ingydotnet/boolean-pm}
|
7
|
+
|
8
|
+
# Delete test dir
|
9
|
+
rm -fr test-repo
|
10
|
+
|
11
|
+
# Clone repo into test dir
|
12
|
+
git clone "git@github.com:$repo" test-repo
|
13
|
+
|
14
|
+
(
|
15
|
+
# cd into test-repo
|
16
|
+
cd test-repo
|
17
|
+
# Tag original head
|
18
|
+
git tag o
|
19
|
+
# Pick a commit in the middle of the commit history
|
20
|
+
S=$(git rev-parse HEAD^^^^)
|
21
|
+
# Reset to the middle commit
|
22
|
+
git reset --hard $S
|
23
|
+
# Tag that history as 'a'
|
24
|
+
git tag a
|
25
|
+
# Reset to original
|
26
|
+
git reset --hard o
|
27
|
+
# Take the tail of the history.
|
28
|
+
git filter-branch -f --parent-filter "sed 's/-p $S//'" $S..HEAD
|
29
|
+
# Mark that sequence as 'b'
|
30
|
+
git tag b
|
31
|
+
# Reset to a
|
32
|
+
git reset --hard a
|
33
|
+
# Add a commit
|
34
|
+
echo foobar >> README
|
35
|
+
git commit README -m 'a change'
|
36
|
+
# Tag as a2
|
37
|
+
git tag a2
|
38
|
+
# Find commits for top of 'a' and root of 'b'
|
39
|
+
A=$(git rev-parse a)
|
40
|
+
RB=$(git rev-list --max-parents=0 b)
|
41
|
+
# Graft them together
|
42
|
+
echo "$RB $A" >> .git/info/grafts
|
43
|
+
|
44
|
+
git rebase --abort; git rebase -s recursive -X patience a2 b
|
45
|
+
# # Make the graft permanent. ie join head+tail
|
46
|
+
# # The commits should rewrite to match original history
|
47
|
+
# git filter-branch -f $RB^..b
|
48
|
+
# # Get commits for new 'b' and original
|
49
|
+
# B=$(git rev-parse b)
|
50
|
+
# O=$(git rev-parse o)
|
51
|
+
# # Check to see if it works
|
52
|
+
# if [ "$B" == "$O" ]; then
|
53
|
+
# echo "It worked: $B"
|
54
|
+
# else
|
55
|
+
# echo "If failed: $B, $O"
|
56
|
+
# fi
|
57
|
+
bash
|
58
|
+
)
|
@@ -0,0 +1,210 @@
|
|
1
|
+
#!/usr/bin/env perl
|
2
|
+
|
3
|
+
use strict;
|
4
|
+
# use XXX;
|
5
|
+
|
6
|
+
sub main {
|
7
|
+
my ($cmd) = @_;
|
8
|
+
my $input = do { local $/; <> };
|
9
|
+
my $input2 = do { local $/; <> };
|
10
|
+
my ($options_spec) = $input2 =~ m/ ^ GETOPT_SPEC="\\ $ (.*?) ^ " $/xsm;
|
11
|
+
$options_spec =~ s/.*Options:\n--//s;
|
12
|
+
|
13
|
+
my @options;
|
14
|
+
for my $line (split m/\n/, $options_spec) {
|
15
|
+
next unless $line =~ m/\S/;
|
16
|
+
my $arg = 0;
|
17
|
+
my ($key, $desc) = split ' ', $line, 2;
|
18
|
+
if ($key =~ s/=$//) {
|
19
|
+
$arg = 1;
|
20
|
+
}
|
21
|
+
my @keys = split m/,/, $key;
|
22
|
+
push @options, { keys => \@keys, arg => $arg, desc => $desc };
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
$input =~ s/.*?\n= Commands\n//s;
|
27
|
+
$input =~ s/(.*?\n)==? .*/$1/s;
|
28
|
+
my @list;
|
29
|
+
my @subdir_cmds;
|
30
|
+
while ($input =~ s/.*?^- (.*?\n)(?=- |== |\z)//ms) {
|
31
|
+
my $text = $1;
|
32
|
+
$text =~ /\A(.*)\n/
|
33
|
+
or die "Bad text '$text'";
|
34
|
+
my $usage = $1;
|
35
|
+
$usage =~ s/\A`(.*)`\z/$1/
|
36
|
+
or die "Bad usage: '$text'";
|
37
|
+
my ($x1, $x2, $name) = split / +/, $usage;
|
38
|
+
push @list, $name;
|
39
|
+
if ($usage =~ m#\Q$name\E \[?<subdir>\]?# and $name ne "init") {
|
40
|
+
push @subdir_cmds, $name;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
@subdir_cmds = sort @subdir_cmds;
|
44
|
+
@list = sort @list;
|
45
|
+
|
46
|
+
if ($cmd eq "bash") {
|
47
|
+
generate_bash(\@list, \@subdir_cmds, \@options);
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
generate_zsh(\@list, \@subdir_cmds, \@options);
|
51
|
+
}
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
sub generate_zsh {
|
56
|
+
my ($list, $subdir_cmds, $options) = @_;
|
57
|
+
my $options_string = '';
|
58
|
+
for my $opt (@$options) {
|
59
|
+
my $keys = $opt->{keys};
|
60
|
+
my $desc = $opt->{desc};
|
61
|
+
$desc =~ s/'/'"'"'/g;
|
62
|
+
# examples:
|
63
|
+
#'(-c --count)'{-c,--count}'[Number of list items to show]:count' \
|
64
|
+
#'--remote[Remote name (like "origin")]:remote' \
|
65
|
+
my $arg = '';
|
66
|
+
if ($opt->{arg}) {
|
67
|
+
$arg = ":$keys->[0]";
|
68
|
+
}
|
69
|
+
my @keystrings = map { (length $_ > 1 ? "--" : "-") . $_ } @$keys;
|
70
|
+
if (@$keys == 1) {
|
71
|
+
$options_string .= sprintf " '%s[%s]%s' \\\n",
|
72
|
+
$keystrings[0], $desc, $arg;
|
73
|
+
}
|
74
|
+
elsif (@$keys > 1) {
|
75
|
+
$options_string .= sprintf " '(%s)'{%s}'[%s]%s' \\\n",
|
76
|
+
(join ' ', @keystrings), (join ',', @keystrings), $desc, $arg;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
print <<'...';
|
80
|
+
#compdef git-subrepo -P git\ ##subrepo
|
81
|
+
#description perform git-subrepo operations
|
82
|
+
|
83
|
+
# DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl.
|
84
|
+
|
85
|
+
if [[ -z $GIT_SUBREPO_ROOT ]]; then
|
86
|
+
echo 'GIT_SUBREPO_ROOT is null; has `/path/to/git-subrepo/.rc` been sourced?'
|
87
|
+
return 3
|
88
|
+
fi
|
89
|
+
|
90
|
+
_git-subrepo() {
|
91
|
+
typeset -A opt_args
|
92
|
+
local curcontext="$curcontext" state line context
|
93
|
+
|
94
|
+
_arguments -s \
|
95
|
+
'1: :->subcmd' \
|
96
|
+
'*: :->args' \
|
97
|
+
...
|
98
|
+
print <<"...";
|
99
|
+
$options_string && ret=0
|
100
|
+
|
101
|
+
case \$state in
|
102
|
+
subcmd)
|
103
|
+
compadd @$list
|
104
|
+
;;
|
105
|
+
|
106
|
+
args)
|
107
|
+
case \$line[1] in
|
108
|
+
|
109
|
+
clone)
|
110
|
+
_arguments -C \\
|
111
|
+
'1: :->subcmd' \\
|
112
|
+
'2: :->repo' \\
|
113
|
+
'*: :->subdir' \\
|
114
|
+
&& ret=0
|
115
|
+
case \$state in
|
116
|
+
subdir|repo)
|
117
|
+
_files
|
118
|
+
;;
|
119
|
+
esac
|
120
|
+
;;
|
121
|
+
|
122
|
+
@{[ join '|', @$subdir_cmds ]})
|
123
|
+
_compadd_subdirs
|
124
|
+
;;
|
125
|
+
|
126
|
+
init)
|
127
|
+
_files
|
128
|
+
;;
|
129
|
+
|
130
|
+
help)
|
131
|
+
compadd @$list
|
132
|
+
;;
|
133
|
+
esac
|
134
|
+
;;
|
135
|
+
esac
|
136
|
+
|
137
|
+
\}
|
138
|
+
|
139
|
+
_compadd_subdirs() {
|
140
|
+
local subrepos
|
141
|
+
IFS=\$'\\n' set -A subrepos `git subrepo status -q`
|
142
|
+
compadd -X "subrepos: " \$subrepos
|
143
|
+
}
|
144
|
+
...
|
145
|
+
}
|
146
|
+
|
147
|
+
sub generate_bash {
|
148
|
+
|
149
|
+
my ($list, $subdir_cmds, $options, $complete_fetch_limit) = @_;
|
150
|
+
my $options_string = '';
|
151
|
+
for my $opt (@$options) {
|
152
|
+
my $keys = $opt->{keys};
|
153
|
+
my $arg = '';
|
154
|
+
if ($opt->{arg}) {
|
155
|
+
$arg = "=";
|
156
|
+
}
|
157
|
+
my @keystrings = map { (length $_ > 1 ? "--" : "-") . $_ } @$keys;
|
158
|
+
for my $key (@keystrings) {
|
159
|
+
$options_string .= " $key$arg";
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
print <<"...";
|
164
|
+
#!bash
|
165
|
+
|
166
|
+
# DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl.
|
167
|
+
|
168
|
+
_git_subrepo() {
|
169
|
+
local _opts="$options_string"
|
170
|
+
local subcommands="@$list"
|
171
|
+
local subdircommands="@$subdir_cmds"
|
172
|
+
local subcommand="\$(__git_find_on_cmdline "\$subcommands")"
|
173
|
+
|
174
|
+
if [ -z "\$subcommand" ]; then
|
175
|
+
# no subcommand yet
|
176
|
+
case "\$cur" in
|
177
|
+
-*)
|
178
|
+
__gitcomp "\$_opts"
|
179
|
+
;;
|
180
|
+
*)
|
181
|
+
__gitcomp "\$subcommands"
|
182
|
+
esac
|
183
|
+
|
184
|
+
else
|
185
|
+
|
186
|
+
case "\$cur" in
|
187
|
+
-*)
|
188
|
+
__gitcomp "\$_opts"
|
189
|
+
return
|
190
|
+
;;
|
191
|
+
esac
|
192
|
+
|
193
|
+
if [[ "\$subcommand" == "help" ]]; then
|
194
|
+
__gitcomp "\$subcommands"
|
195
|
+
return
|
196
|
+
fi
|
197
|
+
|
198
|
+
local subdircommand="\$(__git_find_on_cmdline "\$subdircommands")"
|
199
|
+
if [ ! -z "\$subdircommand" ]; then
|
200
|
+
local git_subrepos=`git subrepo status -q`
|
201
|
+
__gitcomp "\$git_subrepos"
|
202
|
+
fi
|
203
|
+
|
204
|
+
fi
|
205
|
+
}
|
206
|
+
...
|
207
|
+
|
208
|
+
}
|
209
|
+
|
210
|
+
main(shift);
|