git 5.0.0.beta.2 → 5.0.0.beta.4
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/.dockerignore +27 -0
- data/.github/copilot-instructions.md +3 -8
- data/.github/hooks/bin-setup-on-worktree.json +11 -0
- data/.github/hooks/run-bin-setup-once.sh +14 -0
- data/.github/skills/breaking-change-analysis/SKILL.md +6 -9
- data/.github/skills/ci-cd-troubleshooting/SKILL.md +2 -2
- data/.github/skills/command-implementation/REFERENCE.md +34 -33
- data/.github/skills/command-implementation/SKILL.md +5 -4
- data/.github/skills/command-test-conventions/SKILL.md +13 -9
- data/.github/skills/command-yard-documentation/SKILL.md +14 -6
- data/.github/skills/development-workflow/SKILL.md +20 -14
- data/.github/skills/facade-implementation/REFERENCE.md +19 -22
- data/.github/skills/facade-implementation/SKILL.md +0 -5
- data/.github/skills/facade-test-conventions/SKILL.md +4 -7
- data/.github/skills/facade-yard-documentation/SKILL.md +8 -2
- data/.github/skills/make-skill-template/SKILL.md +53 -3
- data/.github/skills/pr-readiness-review/SKILL.md +22 -2
- data/.github/skills/project-context/SKILL.md +16 -23
- data/.github/skills/pull-request-review/SKILL.md +2 -2
- data/.github/skills/rebase/SKILL.md +148 -0
- data/.github/skills/refactor-command-to-commandlineresult/SKILL.md +1 -1
- data/.github/skills/resolve-feedback/SKILL.md +288 -0
- data/.github/skills/review-arguments-dsl/CHECKLIST.md +3 -3
- data/.github/skills/reviewing-skills/SKILL.md +28 -3
- data/.github/skills/test-debugging/SKILL.md +20 -19
- data/.github/skills/yard-documentation/SKILL.md +671 -483
- data/.github/skills/yard-documentation/element-rules.md +162 -0
- data/.github/skills-deprecated/README.md +21 -0
- data/.github/{skills → skills-deprecated}/extract-command-from-lib/SKILL.md +9 -9
- data/.github/{skills → skills-deprecated}/extract-facade-from-base-lib/SKILL.md +12 -12
- data/.github/workflows/continuous_integration.yml +3 -2
- data/.rubocop.yml +7 -39
- data/.yard-lint.yml +75 -0
- data/CONTRIBUTING.md +186 -174
- data/Gemfile +17 -0
- data/README.md +86 -23
- data/Rakefile +3 -21
- data/UPGRADING.md +219 -70
- data/docker/test/Dockerfile +32 -0
- data/docker/test/docker-compose.yml +0 -0
- data/git.gemspec +3 -4
- data/lib/git/author.rb +20 -1
- data/lib/git/branch.rb +26 -6
- data/lib/git/branch_delete_failure.rb +3 -0
- data/lib/git/branch_delete_result.rb +6 -3
- data/lib/git/branch_info.rb +6 -6
- data/lib/git/command_line/base.rb +6 -13
- data/lib/git/command_line/capturing.rb +67 -10
- data/lib/git/command_line/result.rb +0 -8
- data/lib/git/command_line/streaming.rb +45 -5
- data/lib/git/command_line.rb +4 -3
- data/lib/git/commands/add.rb +61 -53
- data/lib/git/commands/am/abort.rb +2 -2
- data/lib/git/commands/am/apply.rb +109 -98
- data/lib/git/commands/am/continue.rb +2 -2
- data/lib/git/commands/am/quit.rb +2 -2
- data/lib/git/commands/am/retry.rb +4 -2
- data/lib/git/commands/am/show_current_patch.rb +1 -1
- data/lib/git/commands/am/skip.rb +2 -2
- data/lib/git/commands/am.rb +2 -2
- data/lib/git/commands/apply.rb +7 -2
- data/lib/git/commands/archive/list_formats.rb +3 -3
- data/lib/git/commands/archive.rb +7 -2
- data/lib/git/commands/arguments.rb +1370 -359
- data/lib/git/commands/base.rb +111 -13
- data/lib/git/commands/branch/copy.rb +29 -21
- data/lib/git/commands/branch/create.rb +72 -68
- data/lib/git/commands/branch/delete.rb +25 -17
- data/lib/git/commands/branch/list.rb +76 -60
- data/lib/git/commands/branch/move.rb +29 -21
- data/lib/git/commands/branch/set_upstream.rb +8 -8
- data/lib/git/commands/branch/show_current.rb +3 -3
- data/lib/git/commands/branch/unset_upstream.rb +4 -8
- data/lib/git/commands/branch.rb +2 -2
- data/lib/git/commands/cat_file/batch.rb +36 -20
- data/lib/git/commands/cat_file/filtered.rb +12 -12
- data/lib/git/commands/cat_file/raw.rb +13 -13
- data/lib/git/commands/cat_file.rb +4 -4
- data/lib/git/commands/checkout/branch.rb +7 -5
- data/lib/git/commands/checkout/files.rb +5 -4
- data/lib/git/commands/checkout.rb +4 -4
- data/lib/git/commands/checkout_index.rb +5 -4
- data/lib/git/commands/clean.rb +6 -4
- data/lib/git/commands/clone.rb +5 -4
- data/lib/git/commands/commit.rb +5 -4
- data/lib/git/commands/commit_tree.rb +5 -4
- data/lib/git/commands/config_option_syntax/add.rb +7 -4
- data/lib/git/commands/config_option_syntax/get.rb +9 -5
- data/lib/git/commands/config_option_syntax/get_all.rb +7 -4
- data/lib/git/commands/config_option_syntax/get_color.rb +8 -4
- data/lib/git/commands/config_option_syntax/get_color_bool.rb +7 -4
- data/lib/git/commands/config_option_syntax/get_regexp.rb +8 -4
- data/lib/git/commands/config_option_syntax/get_urlmatch.rb +8 -4
- data/lib/git/commands/config_option_syntax/list.rb +8 -4
- data/lib/git/commands/config_option_syntax/remove_section.rb +7 -2
- data/lib/git/commands/config_option_syntax/rename_section.rb +7 -2
- data/lib/git/commands/config_option_syntax/replace_all.rb +7 -2
- data/lib/git/commands/config_option_syntax/set.rb +7 -2
- data/lib/git/commands/config_option_syntax/unset.rb +7 -4
- data/lib/git/commands/config_option_syntax/unset_all.rb +7 -2
- data/lib/git/commands/describe.rb +5 -4
- data/lib/git/commands/diff.rb +13 -12
- data/lib/git/commands/diff_files.rb +7 -6
- data/lib/git/commands/diff_index.rb +10 -7
- data/lib/git/commands/fetch.rb +6 -4
- data/lib/git/commands/fsck.rb +6 -4
- data/lib/git/commands/gc.rb +6 -4
- data/lib/git/commands/grep.rb +6 -5
- data/lib/git/commands/init.rb +6 -4
- data/lib/git/commands/log.rb +287 -285
- data/lib/git/commands/ls_files.rb +69 -65
- data/lib/git/commands/ls_remote.rb +62 -56
- data/lib/git/commands/ls_tree.rb +50 -46
- data/lib/git/commands/maintenance/register.rb +25 -23
- data/lib/git/commands/maintenance/run.rb +7 -2
- data/lib/git/commands/maintenance/start.rb +7 -2
- data/lib/git/commands/maintenance/stop.rb +7 -2
- data/lib/git/commands/maintenance/unregister.rb +7 -2
- data/lib/git/commands/merge/abort.rb +2 -2
- data/lib/git/commands/merge/continue.rb +2 -2
- data/lib/git/commands/merge/quit.rb +2 -2
- data/lib/git/commands/merge/start.rb +7 -2
- data/lib/git/commands/merge.rb +2 -2
- data/lib/git/commands/merge_base.rb +7 -2
- data/lib/git/commands/mv.rb +7 -2
- data/lib/git/commands/name_rev.rb +7 -2
- data/lib/git/commands/pull.rb +7 -2
- data/lib/git/commands/push.rb +7 -2
- data/lib/git/commands/read_tree.rb +7 -2
- data/lib/git/commands/remote/add.rb +7 -2
- data/lib/git/commands/remote/get_url.rb +4 -2
- data/lib/git/commands/remote/list.rb +4 -2
- data/lib/git/commands/remote/prune.rb +4 -2
- data/lib/git/commands/remote/remove.rb +4 -2
- data/lib/git/commands/remote/rename.rb +4 -2
- data/lib/git/commands/remote/set_branches.rb +9 -2
- data/lib/git/commands/remote/set_head.rb +12 -5
- data/lib/git/commands/remote/set_url.rb +9 -2
- data/lib/git/commands/remote/set_url_add.rb +11 -2
- data/lib/git/commands/remote/set_url_delete.rb +9 -2
- data/lib/git/commands/remote/show.rb +18 -12
- data/lib/git/commands/remote/update.rb +19 -12
- data/lib/git/commands/remote.rb +2 -2
- data/lib/git/commands/repack.rb +67 -63
- data/lib/git/commands/reset.rb +51 -44
- data/lib/git/commands/rev_parse.rb +135 -128
- data/lib/git/commands/revert/abort.rb +2 -2
- data/lib/git/commands/revert/continue.rb +7 -2
- data/lib/git/commands/revert/quit.rb +2 -2
- data/lib/git/commands/revert/skip.rb +2 -2
- data/lib/git/commands/revert/start.rb +7 -2
- data/lib/git/commands/revert.rb +2 -2
- data/lib/git/commands/rm.rb +35 -36
- data/lib/git/commands/show.rb +1 -1
- data/lib/git/commands/show_ref/exclude_existing.rb +3 -4
- data/lib/git/commands/show_ref/exists.rb +15 -13
- data/lib/git/commands/show_ref/list.rb +39 -35
- data/lib/git/commands/show_ref/verify.rb +29 -27
- data/lib/git/commands/show_ref.rb +4 -4
- data/lib/git/commands/stash/apply.rb +31 -25
- data/lib/git/commands/stash/branch.rb +10 -8
- data/lib/git/commands/stash/clear.rb +7 -5
- data/lib/git/commands/stash/create.rb +10 -8
- data/lib/git/commands/stash/drop.rb +15 -9
- data/lib/git/commands/stash/list.rb +9 -5
- data/lib/git/commands/stash/pop.rb +21 -12
- data/lib/git/commands/stash/push.rb +20 -11
- data/lib/git/commands/stash/show.rb +21 -12
- data/lib/git/commands/stash/store.rb +19 -10
- data/lib/git/commands/stash.rb +2 -2
- data/lib/git/commands/status.rb +7 -2
- data/lib/git/commands/symbolic_ref/delete.rb +18 -14
- data/lib/git/commands/symbolic_ref/read.rb +24 -20
- data/lib/git/commands/symbolic_ref/update.rb +20 -17
- data/lib/git/commands/symbolic_ref.rb +4 -4
- data/lib/git/commands/tag/create.rb +45 -42
- data/lib/git/commands/tag/delete.rb +5 -3
- data/lib/git/commands/tag/list.rb +47 -44
- data/lib/git/commands/tag/verify.rb +12 -12
- data/lib/git/commands/tag.rb +2 -2
- data/lib/git/commands/update_ref/batch.rb +6 -1
- data/lib/git/commands/update_ref/delete.rb +19 -21
- data/lib/git/commands/update_ref/update.rb +22 -25
- data/lib/git/commands/update_ref.rb +4 -4
- data/lib/git/commands/version.rb +14 -11
- data/lib/git/commands/worktree/add.rb +50 -51
- data/lib/git/commands/worktree/list.rb +17 -17
- data/lib/git/commands/worktree/lock.rb +12 -12
- data/lib/git/commands/worktree/move.rb +16 -16
- data/lib/git/commands/worktree/prune.rb +2 -2
- data/lib/git/commands/worktree/remove.rb +2 -2
- data/lib/git/commands/worktree/repair.rb +2 -2
- data/lib/git/commands/worktree/unlock.rb +2 -2
- data/lib/git/commands/write_tree.rb +2 -2
- data/lib/git/commands.rb +4 -3
- data/lib/git/config.rb +47 -1
- data/lib/git/configuring.rb +89 -15
- data/lib/git/detached_head_info.rb +4 -1
- data/lib/git/diff.rb +2 -5
- data/lib/git/diff_file_numstat_info.rb +3 -1
- data/lib/git/diff_file_patch_info.rb +3 -1
- data/lib/git/diff_file_raw_info.rb +3 -1
- data/lib/git/diff_info.rb +8 -15
- data/lib/git/diff_path_status.rb +16 -3
- data/lib/git/diff_result.rb +3 -1
- data/lib/git/diff_stats.rb +15 -0
- data/lib/git/dirstat_info.rb +24 -8
- data/lib/git/encoding_utils.rb +32 -1
- data/lib/git/errors.rb +19 -9
- data/lib/git/escaped_path.rb +55 -3
- data/lib/git/execution_context/repository.rb +15 -0
- data/lib/git/execution_context.rb +76 -74
- data/lib/git/file_ref.rb +6 -3
- data/lib/git/fsck_object.rb +8 -0
- data/lib/git/fsck_result.rb +26 -15
- data/lib/git/log.rb +152 -5
- data/lib/git/object.rb +284 -8
- data/lib/git/parsers/branch.rb +18 -0
- data/lib/git/parsers/cat_file.rb +2 -2
- data/lib/git/parsers/diff.rb +213 -5
- data/lib/git/parsers/fsck.rb +11 -0
- data/lib/git/parsers/ls_remote.rb +1 -1
- data/lib/git/parsers/stash.rb +51 -0
- data/lib/git/parsers/tag.rb +38 -0
- data/lib/git/remote.rb +34 -2
- data/lib/git/repository/branching.rb +23 -21
- data/lib/git/repository/committing.rb +46 -6
- data/lib/git/repository/context_helpers.rb +45 -16
- data/lib/git/repository/diffing.rb +32 -23
- data/lib/git/repository/factories.rb +153 -28
- data/lib/git/repository/inspecting.rb +1 -1
- data/lib/git/repository/logging.rb +169 -30
- data/lib/git/repository/maintenance.rb +1 -1
- data/lib/git/repository/merging.rb +3 -3
- data/lib/git/repository/object_operations.rb +108 -14
- data/lib/git/repository/remote_operations.rb +150 -171
- data/lib/git/repository/shared_private.rb +7 -5
- data/lib/git/repository/staging.rb +36 -12
- data/lib/git/repository/stashing.rb +16 -16
- data/lib/git/repository/status_operations.rb +1 -1
- data/lib/git/repository/worktree_operations.rb +1 -1
- data/lib/git/repository.rb +287 -6
- data/lib/git/stash.rb +16 -21
- data/lib/git/stash_info.rb +4 -4
- data/lib/git/stashes.rb +20 -26
- data/lib/git/status.rb +25 -13
- data/lib/git/tag_delete_failure.rb +3 -0
- data/lib/git/tag_delete_result.rb +6 -3
- data/lib/git/tag_info.rb +1 -0
- data/lib/git/url.rb +12 -5
- data/lib/git/version.rb +6 -4
- data/lib/git/version_constraint.rb +4 -0
- data/lib/git.rb +400 -314
- data/redesign/3_architecture_implementation.md +81 -30
- data/redesign/Phase 4 - Step A.md +6 -0
- data/redesign/Phase 4 - Step B.md +921 -0
- data/redesign/Phase 4 - Step C.md +833 -0
- data/redesign/c1a-public-api-scope.tsv +256 -0
- data/redesign/phase-4-step-b-test-audit.tsv +485 -0
- data/tasks/yard.rake +24 -17
- metadata +24 -58
- data/commitlint.test +0 -4
- data/lib/git/args_builder.rb +0 -103
- data/lib/git/command_line_result.rb +0 -8
- data/lib/git/deprecation.rb +0 -9
- data/lib/git/repository/configuring.rb +0 -351
- data/tasks/test.rake +0 -25
- /data/.github/{skills → skills-deprecated}/extract-facade-from-base-lib/KEYWORD_ARG_REMEDIATION.md +0 -0
- /data/.github/{skills → skills-deprecated}/review-backward-compatibility/SKILL.md +0 -0
|
@@ -9,7 +9,7 @@ risk and allows for a gradual, controlled migration to the new architecture.
|
|
|
9
9
|
- [Facade Modules Completed](#facade-modules-completed)
|
|
10
10
|
- [Facade module naming convention](#facade-module-naming-convention)
|
|
11
11
|
- [Next Task](#next-task)
|
|
12
|
-
- [
|
|
12
|
+
- [Phase 4 complete — architectural redesign is done 🎉](#phase-4-complete--architectural-redesign-is-done-)
|
|
13
13
|
- [Phase 3 Overview](#phase-3-overview)
|
|
14
14
|
- [Workstream A — Fill facade coverage gaps](#workstream-a--fill-facade-coverage-gaps)
|
|
15
15
|
- [Workstream B — C0: Redirect `Git::Base` factory methods to `facade_repository`](#workstream-b--c0-redirect-gitbase-factory-methods-to-facade_repository)
|
|
@@ -44,8 +44,8 @@ risk and allows for a gradual, controlled migration to the new architecture.
|
|
|
44
44
|
| Phase 1 | ✅ Complete | Foundation and scaffolding | 5% | 100% |
|
|
45
45
|
| Phase 2 | ✅ Complete | Migrating commands (all checklist items done) | 40% | 100% |
|
|
46
46
|
| Phase 3 | ✅ Complete | Refactoring public interface — see [Facade Modules Completed](#facade-modules-completed) and [Facade coverage checklist](#facade-coverage-checklist) | 45% | 100% |
|
|
47
|
-
| Phase 4 |
|
|
48
|
-
| **TOTAL** |
|
|
47
|
+
| Phase 4 | ✅ Complete | Final cleanup and release — Steps A, B, and C all complete | 10% | 100% |
|
|
48
|
+
| **TOTAL** | ✅ **Complete** | -- | **100%** | **100%** |
|
|
49
49
|
|
|
50
50
|
### Facade Modules Completed
|
|
51
51
|
|
|
@@ -85,20 +85,50 @@ such as `Branch`, `Diff`, `Log`, `Object`, `Remote`, `Status`, `Worktree`, etc.
|
|
|
85
85
|
|
|
86
86
|
### Next Task
|
|
87
87
|
|
|
88
|
-
####
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
88
|
+
#### Phase 4 complete — architectural redesign is done 🎉
|
|
89
|
+
|
|
90
|
+
Phase 4 **Step A — Remove old code** is ✅ complete. The atomic removal landed in
|
|
91
|
+
[PR #1456](https://github.com/ruby-git/ruby-git/pull/1456) (commit `c1c53999`),
|
|
92
|
+
which deleted `Git::Base` and `Git::Lib`, removed the `base_object` / `from_base`
|
|
93
|
+
bridge from `Git::ExecutionContext::Repository`, and dropped the legacy `require`
|
|
94
|
+
lines from `lib/git.rb`. This also satisfies the long-standing **D2** redesign
|
|
95
|
+
item. The only remaining `Git::Base` / `Git::Lib` strings in `lib/` are YARD/comment
|
|
96
|
+
references to historical 4.x behavior, which the Step A done-criteria explicitly
|
|
97
|
+
allow.
|
|
98
|
+
|
|
99
|
+
Phase 4 **Step B — Finalize test suite** is ✅ complete. All 159 PORT rows (after dedup) were ported
|
|
100
|
+
to RSpec (batches U1–U21), `tests/` and the Test::Unit tooling were removed (W3), the
|
|
101
|
+
`extract-*` skills were deprecated (W4a), Test::Unit documentation references were
|
|
102
|
+
removed (W4b), the full quality gate was verified green (W5 — 5668 unit + 893
|
|
103
|
+
integration examples, 0 failures), and stale `Git::Base`/`Git::Lib` references were
|
|
104
|
+
removed from active Copilot skills (W6 — [PR #1509](https://github.com/ruby-git/ruby-git/pull/1509)).
|
|
105
|
+
|
|
106
|
+
Phase 4 **Step C — Update documentation** is ✅ complete. C1a–C1d (YARD audit and
|
|
107
|
+
coverage gate), C2a–C2b (`UPGRADING.md` and `README.md`), and C3 (documentation
|
|
108
|
+
completeness verification) are all done. Final state: all unit and integration examples
|
|
109
|
+
pass, 0 failures; 100.00% documented; `yard:lint` no offenses; gem builds.
|
|
110
|
+
One gap found and fixed during C3b: `Git::Status` was missing a class-level
|
|
111
|
+
`@example` (added in this PR).
|
|
112
|
+
|
|
113
|
+
All Phase 4 steps are now complete:
|
|
114
|
+
|
|
115
|
+
| Step | Status | Summary |
|
|
116
|
+
| ---- | ------ | ------- |
|
|
117
|
+
| A — Remove old code | ✅ Complete | `Git::Base`/`Git::Lib` and the bridge deleted ([PR #1456](https://github.com/ruby-git/ruby-git/pull/1456)) |
|
|
118
|
+
| B — Finalize test suite | ✅ Complete | W2 ✅ (all 159 PORT rows ported and merged after dedup, batches U1–U21); W3 ✅ (removed `tests/` and Test::Unit tooling); W4a ✅ (deprecated `extract-*` skills); W4b ✅ (removed Test::Unit doc references); W5 ✅ (gate green: 5668 unit + 893 integration, 0 failures); W6 ✅ (removed stale `Git::Base`/`Git::Lib` skill refs, [PR #1509](https://github.com/ruby-git/ruby-git/pull/1509)) |
|
|
119
|
+
| C — Update documentation | ✅ Complete | C1a–C1d ✅ (YARD audit + coverage gate); C2a ✅ (`UPGRADING.md`); C2b ✅ (`README.md`); C3 ✅ (docs verification: CI green, spot-check passed, links valid) |
|
|
120
|
+
|
|
121
|
+
The architectural redesign is now **fully complete**. The codebase is ready for the
|
|
122
|
+
v5.0.0 release process (see the
|
|
123
|
+
[release-management](../.github/skills/release-management/SKILL.md) skill).
|
|
124
|
+
|
|
125
|
+
The following earlier prerequisites are all ✅ complete:
|
|
97
126
|
|
|
98
127
|
| Step | Status |
|
|
99
128
|
| ---- | ------ |
|
|
100
129
|
| C1c-2: public-API parity audit and remediation sweep | ✅ |
|
|
101
130
|
| E: block-based helper/path-context methods migrated | ✅ |
|
|
131
|
+
| D2: remove the `base_object` / `from_base` bridge | ✅ |
|
|
102
132
|
|
|
103
133
|
Steps C1d-1, C1d-2, and C1d-3 are ✅ complete (see their detail sections below for full specs).
|
|
104
134
|
|
|
@@ -120,10 +150,10 @@ All 9 domain-object migrations are ✅ complete:
|
|
|
120
150
|
| `Git::Branches` | [PR #1356](https://github.com/ruby-git/ruby-git/pull/1356), [PR #1357](https://github.com/ruby-git/ruby-git/pull/1357), [PR #1358](https://github.com/ruby-git/ruby-git/pull/1358), [PR #1359](https://github.com/ruby-git/ruby-git/pull/1359) |
|
|
121
151
|
| `Git::Worktree` + `Git::Worktrees` | — |
|
|
122
152
|
|
|
123
|
-
The work was organized into six workstreams (A–F). All workstreams
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
153
|
+
The work was organized into six workstreams (A–F). All workstreams are ✅ complete.
|
|
154
|
+
F1 and F2 are both ✅ complete — F2 moved the remaining `Git` module utility methods
|
|
155
|
+
off `Git::Lib`. Phase 4 Steps A, B, and C are all ✅ complete (see
|
|
156
|
+
[Next Task](#next-task)).
|
|
127
157
|
|
|
128
158
|
**Sequencing** (see [Phase 3 dependency order](#phase-3-dependency-order) for the
|
|
129
159
|
reasoning behind each edge):
|
|
@@ -1538,35 +1568,56 @@ release.*
|
|
|
1538
1568
|
|
|
1539
1569
|
```mermaid
|
|
1540
1570
|
graph LR
|
|
1541
|
-
A --> B
|
|
1542
|
-
B --> C
|
|
1571
|
+
A["A ✅ Remove old code"] --> B["B ✅ Finalize test suite"]
|
|
1572
|
+
B --> C["C 🚧 Update documentation"]
|
|
1543
1573
|
```
|
|
1544
1574
|
|
|
1545
1575
|
#### Step A — Remove old code
|
|
1546
1576
|
|
|
1577
|
+
**Status: ✅ Complete.** Completed in [PR #1456](https://github.com/ruby-git/ruby-git/pull/1456)
|
|
1578
|
+
(commit `c1c53999`).
|
|
1579
|
+
|
|
1547
1580
|
- Delete `attr_reader :base_object`, remove `base_object:` from `#initialize`, and remove or convert `from_base`.
|
|
1548
1581
|
- Delete the `Git::Lib` class entirely.
|
|
1549
1582
|
- Delete the `Git::Base` class file.
|
|
1550
1583
|
- Remove any other dead code that was part of the old implementation.
|
|
1551
1584
|
|
|
1552
|
-
**Done when**: `lib/git/lib.rb` and `lib/git/base.rb` are deleted; `Git::ExecutionContext::Repository` no longer accepts or exposes `base_object`; no references to `Git::Lib` or `Git::Base` remain in `lib
|
|
1585
|
+
**Done when**: `lib/git/lib.rb` and `lib/git/base.rb` are deleted; `Git::ExecutionContext::Repository` no longer accepts or exposes `base_object`; no runtime references to `Git::Lib` or `Git::Base` remain in `lib/` (YARD/comment references to historical 4.x behavior are allowed). ✅ Met — the only surviving `Git::Lib`/`Git::Base` strings in `lib/` are such doc/comment references.
|
|
1553
1586
|
|
|
1554
1587
|
**Planning tip**: Before generating a deletion plan, audit all remaining callers of `Git::Lib`, `Git::Base`, and `from_base` across `lib/` and `spec/`. The bridge removal and `Git::Base` deletion must land atomically in the same PR — plan for a single large deletion commit rather than incremental removals.
|
|
1555
1588
|
|
|
1556
1589
|
#### Step B — Finalize test suite
|
|
1557
1590
|
|
|
1558
|
-
|
|
1559
|
-
- Remove the `test-unit` dependency from the `Gemfile`.
|
|
1560
|
-
- Ensure the RSpec suite has comprehensive coverage for the new architecture.
|
|
1591
|
+
**Status: ✅ Complete.**
|
|
1561
1592
|
|
|
1562
|
-
|
|
1563
|
-
|
|
1593
|
+
All 159 PORT rows (after dedup) from the W1/W1.5 audit were ported to RSpec across batches U1–U21
|
|
1594
|
+
(W2). The `tests/` directory and all Test::Unit tooling were removed (W3). The
|
|
1595
|
+
`extract-*` skills were deprecated (W4a). All Test::Unit documentation references
|
|
1596
|
+
were removed (W4b). The full quality gate was verified green (W5): 5668 unit examples
|
|
1597
|
+
+ 893 integration examples, 0 failures; RuboCop clean; YARD 83.6% (threshold 75%);
|
|
1598
|
+
gem build successful. W6 (remove stale `Git::Base`/`Git::Lib` skill references from
|
|
1599
|
+
active skills) is complete — both plan ([PR #1506](https://github.com/ruby-git/ruby-git/pull/1506)) and execution ([PR #1509](https://github.com/ruby-git/ruby-git/pull/1509)) have merged.
|
|
1564
1600
|
|
|
1565
|
-
|
|
1601
|
+
See the detailed execution plan in
|
|
1602
|
+
[Phase 4 - Step B.md](Phase%204%20-%20Step%20B.md).
|
|
1566
1603
|
|
|
1567
|
-
|
|
1568
|
-
- Mark all internal classes (`ExecutionContext`, `Commands`, `*Path`) with `@api private` in the YARD documentation.
|
|
1569
|
-
- Update the `README.md` and create a `UPGRADING.md` guide explaining the breaking changes for v5.0.0.
|
|
1604
|
+
#### Step C — Update documentation
|
|
1570
1605
|
|
|
1571
|
-
**
|
|
1572
|
-
|
|
1606
|
+
**Status: 🚧 Partial.** See detailed execution plan in
|
|
1607
|
+
[Phase 4 - Step C.md](Phase%204%20-%20Step%20C.md).
|
|
1608
|
+
|
|
1609
|
+
- ✅ Thoroughly document the new public API (`Git`, `Git::Repository`, etc.) and all
|
|
1610
|
+
of `lib/` — **done**: every file passes `yard-lint` (which replaced the retired
|
|
1611
|
+
`yardstick` tooling) with no offenses.
|
|
1612
|
+
- Set correct `@api` tags across `lib/` (including flipping the `Git::Repository::*`
|
|
1613
|
+
topic modules to `@api private`).
|
|
1614
|
+
- Update the `README.md` and expand the existing `UPGRADING.md` guide explaining the
|
|
1615
|
+
breaking changes for v5.0.0.
|
|
1616
|
+
|
|
1617
|
+
**Done when**: the criteria in the Step C execution plan
|
|
1618
|
+
([Phase 4 - Step C.md](Phase%204%20-%20Step%20C.md) → "Done-When Criteria") are all
|
|
1619
|
+
met. In brief: documentation coverage is complete and enforced by `yard-lint`
|
|
1620
|
+
(`.yard-lint.yml`; `rake yard:lint` passes with no offenses) — already done — the
|
|
1621
|
+
`@api`-visibility tags are correct, `UPGRADING.md` covers all breaking changes,
|
|
1622
|
+
`README.md` reflects the new entry points, and the full CI pipeline is green. This
|
|
1623
|
+
tracker defers to the Step C plan as the single source of truth to avoid drift.
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Phase 4 / Step A — Remove Old Code: Execution Plan
|
|
2
2
|
|
|
3
|
+
> **✅ Status: Complete.** All PRs in this plan (1a–1d, 2a–2c, 3a–3d, and the
|
|
4
|
+
> atomic removal PR 4) have merged. The final removal landed in
|
|
5
|
+
> [PR #1456](https://github.com/ruby-git/ruby-git/pull/1456) (commit `c1c53999`),
|
|
6
|
+
> deleting `Git::Base`, `Git::Lib`, and the `base_object` / `from_base` bridge.
|
|
7
|
+
> This document is retained as a historical record of how Step A was executed.
|
|
8
|
+
|
|
3
9
|
## Goal
|
|
4
10
|
|
|
5
11
|
Delete `Git::Base`, `Git::Lib`, and the `from_base`/`base_object` bridge in a
|