git 4.4.1 → 5.0.0.beta.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 (280) hide show
  1. checksums.yaml +4 -4
  2. data/.github/copilot-instructions.md +67 -2705
  3. data/.github/pull_request_template.md +3 -1
  4. data/.github/skills/breaking-change-analysis/SKILL.md +102 -0
  5. data/.github/skills/ci-cd-troubleshooting/SKILL.md +264 -0
  6. data/.github/skills/command-implementation/REFERENCE.md +993 -0
  7. data/.github/skills/command-implementation/SKILL.md +229 -0
  8. data/.github/skills/command-test-conventions/SKILL.md +660 -0
  9. data/.github/skills/command-yard-documentation/SKILL.md +426 -0
  10. data/.github/skills/dependency-management/SKILL.md +72 -0
  11. data/.github/skills/development-workflow/SKILL.md +506 -0
  12. data/.github/skills/extract-command-from-lib/SKILL.md +487 -0
  13. data/.github/skills/extract-facade-from-base-lib/SKILL.md +586 -0
  14. data/.github/skills/facade-implementation/REFERENCE.md +840 -0
  15. data/.github/skills/facade-implementation/SKILL.md +260 -0
  16. data/.github/skills/facade-test-conventions/SKILL.md +380 -0
  17. data/.github/skills/facade-yard-documentation/SKILL.md +429 -0
  18. data/.github/skills/make-skill-template/SKILL.md +176 -0
  19. data/.github/skills/pr-readiness-review/SKILL.md +185 -0
  20. data/.github/skills/project-context/SKILL.md +313 -0
  21. data/.github/skills/pull-request-review/SKILL.md +168 -0
  22. data/.github/skills/refactor-command-to-commandlineresult/SKILL.md +131 -0
  23. data/.github/skills/release-management/SKILL.md +125 -0
  24. data/.github/skills/review-arguments-dsl/CHECKLIST.md +788 -0
  25. data/.github/skills/review-arguments-dsl/SKILL.md +214 -0
  26. data/.github/skills/review-backward-compatibility/SKILL.md +275 -0
  27. data/.github/skills/review-cross-command-consistency/SKILL.md +139 -0
  28. data/.github/skills/reviewing-skills/SKILL.md +189 -0
  29. data/.github/skills/rspec-unit-testing-standards/SKILL.md +639 -0
  30. data/.github/skills/tdd-refactor-step/SKILL.md +236 -0
  31. data/.github/skills/test-debugging/SKILL.md +160 -0
  32. data/.github/skills/yard-documentation/SKILL.md +793 -0
  33. data/.github/workflows/continuous_integration.yml +3 -67
  34. data/.github/workflows/enforce_conventional_commits.yml +1 -1
  35. data/.github/workflows/experimental_continuous_integration.yml +2 -2
  36. data/.github/workflows/release.yml +3 -4
  37. data/.gitignore +8 -0
  38. data/.husky/pre-commit +13 -0
  39. data/.release-please-manifest.json +1 -1
  40. data/.rspec +3 -0
  41. data/.rubocop.yml +7 -3
  42. data/.rubocop_todo.yml +23 -5
  43. data/.yardopts +1 -0
  44. data/CHANGELOG.md +0 -66
  45. data/CONTRIBUTING.md +694 -53
  46. data/README.md +17 -17
  47. data/Rakefile +61 -9
  48. data/commitlint.test +4 -0
  49. data/git.gemspec +14 -8
  50. data/lib/git/args_builder.rb +0 -8
  51. data/lib/git/base.rb +488 -412
  52. data/lib/git/branch.rb +117 -59
  53. data/lib/git/branch_delete_failure.rb +31 -0
  54. data/lib/git/branch_delete_result.rb +63 -0
  55. data/lib/git/branch_info.rb +178 -0
  56. data/lib/git/branches.rb +130 -24
  57. data/lib/git/command_line/base.rb +245 -0
  58. data/lib/git/command_line/capturing.rb +249 -0
  59. data/lib/git/command_line/result.rb +96 -0
  60. data/lib/git/command_line/streaming.rb +194 -0
  61. data/lib/git/command_line.rb +43 -322
  62. data/lib/git/command_line_result.rb +4 -88
  63. data/lib/git/commands/add.rb +131 -0
  64. data/lib/git/commands/am/abort.rb +43 -0
  65. data/lib/git/commands/am/apply.rb +252 -0
  66. data/lib/git/commands/am/continue.rb +43 -0
  67. data/lib/git/commands/am/quit.rb +43 -0
  68. data/lib/git/commands/am/retry.rb +47 -0
  69. data/lib/git/commands/am/show_current_patch.rb +64 -0
  70. data/lib/git/commands/am/skip.rb +42 -0
  71. data/lib/git/commands/am.rb +33 -0
  72. data/lib/git/commands/apply.rb +237 -0
  73. data/lib/git/commands/archive/list_formats.rb +46 -0
  74. data/lib/git/commands/archive.rb +140 -0
  75. data/lib/git/commands/arguments.rb +3510 -0
  76. data/lib/git/commands/base.rb +403 -0
  77. data/lib/git/commands/branch/copy.rb +94 -0
  78. data/lib/git/commands/branch/create.rb +173 -0
  79. data/lib/git/commands/branch/delete.rb +80 -0
  80. data/lib/git/commands/branch/list.rb +162 -0
  81. data/lib/git/commands/branch/move.rb +94 -0
  82. data/lib/git/commands/branch/set_upstream.rb +86 -0
  83. data/lib/git/commands/branch/show_current.rb +49 -0
  84. data/lib/git/commands/branch/unset_upstream.rb +57 -0
  85. data/lib/git/commands/branch.rb +34 -0
  86. data/lib/git/commands/cat_file/batch.rb +364 -0
  87. data/lib/git/commands/cat_file/filtered.rb +105 -0
  88. data/lib/git/commands/cat_file/raw.rb +210 -0
  89. data/lib/git/commands/cat_file.rb +49 -0
  90. data/lib/git/commands/checkout/branch.rb +151 -0
  91. data/lib/git/commands/checkout/files.rb +115 -0
  92. data/lib/git/commands/checkout.rb +38 -0
  93. data/lib/git/commands/checkout_index.rb +105 -0
  94. data/lib/git/commands/clean.rb +100 -0
  95. data/lib/git/commands/clone.rb +240 -0
  96. data/lib/git/commands/commit.rb +272 -0
  97. data/lib/git/commands/commit_tree.rb +100 -0
  98. data/lib/git/commands/config_option_syntax/add.rb +83 -0
  99. data/lib/git/commands/config_option_syntax/get.rb +117 -0
  100. data/lib/git/commands/config_option_syntax/get_all.rb +115 -0
  101. data/lib/git/commands/config_option_syntax/get_color.rb +91 -0
  102. data/lib/git/commands/config_option_syntax/get_color_bool.rb +93 -0
  103. data/lib/git/commands/config_option_syntax/get_regexp.rb +115 -0
  104. data/lib/git/commands/config_option_syntax/get_urlmatch.rb +102 -0
  105. data/lib/git/commands/config_option_syntax/list.rb +107 -0
  106. data/lib/git/commands/config_option_syntax/remove_section.rb +74 -0
  107. data/lib/git/commands/config_option_syntax/rename_section.rb +78 -0
  108. data/lib/git/commands/config_option_syntax/replace_all.rb +104 -0
  109. data/lib/git/commands/config_option_syntax/set.rb +114 -0
  110. data/lib/git/commands/config_option_syntax/unset.rb +89 -0
  111. data/lib/git/commands/config_option_syntax/unset_all.rb +89 -0
  112. data/lib/git/commands/config_option_syntax.rb +56 -0
  113. data/lib/git/commands/describe.rb +155 -0
  114. data/lib/git/commands/diff.rb +656 -0
  115. data/lib/git/commands/diff_files.rb +518 -0
  116. data/lib/git/commands/diff_index.rb +496 -0
  117. data/lib/git/commands/fetch.rb +352 -0
  118. data/lib/git/commands/fsck.rb +136 -0
  119. data/lib/git/commands/gc.rb +132 -0
  120. data/lib/git/commands/grep.rb +338 -0
  121. data/lib/git/commands/init.rb +99 -0
  122. data/lib/git/commands/log.rb +632 -0
  123. data/lib/git/commands/ls_files.rb +191 -0
  124. data/lib/git/commands/ls_remote.rb +155 -0
  125. data/lib/git/commands/ls_tree.rb +131 -0
  126. data/lib/git/commands/maintenance/register.rb +75 -0
  127. data/lib/git/commands/maintenance/run.rb +104 -0
  128. data/lib/git/commands/maintenance/start.rb +66 -0
  129. data/lib/git/commands/maintenance/stop.rb +55 -0
  130. data/lib/git/commands/maintenance/unregister.rb +79 -0
  131. data/lib/git/commands/maintenance.rb +31 -0
  132. data/lib/git/commands/merge/abort.rb +44 -0
  133. data/lib/git/commands/merge/continue.rb +44 -0
  134. data/lib/git/commands/merge/quit.rb +46 -0
  135. data/lib/git/commands/merge/start.rb +245 -0
  136. data/lib/git/commands/merge.rb +28 -0
  137. data/lib/git/commands/merge_base.rb +86 -0
  138. data/lib/git/commands/mv.rb +77 -0
  139. data/lib/git/commands/name_rev.rb +114 -0
  140. data/lib/git/commands/pull.rb +377 -0
  141. data/lib/git/commands/push.rb +246 -0
  142. data/lib/git/commands/read_tree.rb +149 -0
  143. data/lib/git/commands/remote/add.rb +91 -0
  144. data/lib/git/commands/remote/get_url.rb +66 -0
  145. data/lib/git/commands/remote/list.rb +54 -0
  146. data/lib/git/commands/remote/prune.rb +61 -0
  147. data/lib/git/commands/remote/remove.rb +52 -0
  148. data/lib/git/commands/remote/rename.rb +69 -0
  149. data/lib/git/commands/remote/set_branches.rb +63 -0
  150. data/lib/git/commands/remote/set_head.rb +82 -0
  151. data/lib/git/commands/remote/set_url.rb +71 -0
  152. data/lib/git/commands/remote/set_url_add.rb +61 -0
  153. data/lib/git/commands/remote/set_url_delete.rb +64 -0
  154. data/lib/git/commands/remote/show.rb +71 -0
  155. data/lib/git/commands/remote/update.rb +72 -0
  156. data/lib/git/commands/remote.rb +42 -0
  157. data/lib/git/commands/repack.rb +277 -0
  158. data/lib/git/commands/reset.rb +147 -0
  159. data/lib/git/commands/rev_parse.rb +297 -0
  160. data/lib/git/commands/revert/abort.rb +45 -0
  161. data/lib/git/commands/revert/continue.rb +57 -0
  162. data/lib/git/commands/revert/quit.rb +47 -0
  163. data/lib/git/commands/revert/skip.rb +44 -0
  164. data/lib/git/commands/revert/start.rb +153 -0
  165. data/lib/git/commands/revert.rb +29 -0
  166. data/lib/git/commands/rm.rb +114 -0
  167. data/lib/git/commands/show.rb +632 -0
  168. data/lib/git/commands/show_ref/exclude_existing.rb +120 -0
  169. data/lib/git/commands/show_ref/exists.rb +78 -0
  170. data/lib/git/commands/show_ref/list.rb +145 -0
  171. data/lib/git/commands/show_ref/verify.rb +120 -0
  172. data/lib/git/commands/show_ref.rb +42 -0
  173. data/lib/git/commands/stash/apply.rb +75 -0
  174. data/lib/git/commands/stash/branch.rb +65 -0
  175. data/lib/git/commands/stash/clear.rb +41 -0
  176. data/lib/git/commands/stash/create.rb +58 -0
  177. data/lib/git/commands/stash/drop.rb +67 -0
  178. data/lib/git/commands/stash/list.rb +39 -0
  179. data/lib/git/commands/stash/pop.rb +78 -0
  180. data/lib/git/commands/stash/push.rb +103 -0
  181. data/lib/git/commands/stash/show.rb +149 -0
  182. data/lib/git/commands/stash/store.rb +63 -0
  183. data/lib/git/commands/stash.rb +38 -0
  184. data/lib/git/commands/status.rb +169 -0
  185. data/lib/git/commands/symbolic_ref/delete.rb +68 -0
  186. data/lib/git/commands/symbolic_ref/read.rb +95 -0
  187. data/lib/git/commands/symbolic_ref/update.rb +76 -0
  188. data/lib/git/commands/symbolic_ref.rb +38 -0
  189. data/lib/git/commands/tag/create.rb +139 -0
  190. data/lib/git/commands/tag/delete.rb +55 -0
  191. data/lib/git/commands/tag/list.rb +143 -0
  192. data/lib/git/commands/tag/verify.rb +71 -0
  193. data/lib/git/commands/tag.rb +26 -0
  194. data/lib/git/commands/update_ref/batch.rb +140 -0
  195. data/lib/git/commands/update_ref/delete.rb +92 -0
  196. data/lib/git/commands/update_ref/update.rb +106 -0
  197. data/lib/git/commands/update_ref.rb +42 -0
  198. data/lib/git/commands/version.rb +52 -0
  199. data/lib/git/commands/worktree/add.rb +140 -0
  200. data/lib/git/commands/worktree/list.rb +64 -0
  201. data/lib/git/commands/worktree/lock.rb +58 -0
  202. data/lib/git/commands/worktree/management_base.rb +51 -0
  203. data/lib/git/commands/worktree/move.rb +66 -0
  204. data/lib/git/commands/worktree/prune.rb +67 -0
  205. data/lib/git/commands/worktree/remove.rb +63 -0
  206. data/lib/git/commands/worktree/repair.rb +76 -0
  207. data/lib/git/commands/worktree/unlock.rb +47 -0
  208. data/lib/git/commands/worktree.rb +43 -0
  209. data/lib/git/commands/write_tree.rb +68 -0
  210. data/lib/git/commands.rb +89 -0
  211. data/lib/git/detached_head_info.rb +54 -0
  212. data/lib/git/diff.rb +297 -7
  213. data/lib/git/diff_file_numstat_info.rb +29 -0
  214. data/lib/git/diff_file_patch_info.rb +134 -0
  215. data/lib/git/diff_file_raw_info.rb +127 -0
  216. data/lib/git/diff_info.rb +169 -0
  217. data/lib/git/diff_path_status.rb +78 -19
  218. data/lib/git/diff_result.rb +32 -0
  219. data/lib/git/diff_stats.rb +59 -14
  220. data/lib/git/dirstat_info.rb +86 -0
  221. data/lib/git/errors.rb +65 -2
  222. data/lib/git/execution_context/global.rb +56 -0
  223. data/lib/git/execution_context/repository.rb +147 -0
  224. data/lib/git/execution_context.rb +482 -0
  225. data/lib/git/file_ref.rb +74 -0
  226. data/lib/git/fsck_object.rb +9 -9
  227. data/lib/git/fsck_result.rb +1 -1
  228. data/lib/git/lib.rb +1606 -1085
  229. data/lib/git/log.rb +15 -2
  230. data/lib/git/object.rb +92 -22
  231. data/lib/git/parsers/branch.rb +224 -0
  232. data/lib/git/parsers/cat_file.rb +111 -0
  233. data/lib/git/parsers/diff.rb +585 -0
  234. data/lib/git/parsers/fsck.rb +133 -0
  235. data/lib/git/parsers/grep.rb +42 -0
  236. data/lib/git/parsers/ls_tree.rb +58 -0
  237. data/lib/git/parsers/stash.rb +208 -0
  238. data/lib/git/parsers/tag.rb +257 -0
  239. data/lib/git/remote.rb +133 -9
  240. data/lib/git/repository/branching.rb +572 -0
  241. data/lib/git/repository/committing.rb +191 -0
  242. data/lib/git/repository/configuring.rb +156 -0
  243. data/lib/git/repository/diffing.rb +775 -0
  244. data/lib/git/repository/inspecting.rb +153 -0
  245. data/lib/git/repository/logging.rb +247 -0
  246. data/lib/git/repository/merging.rb +295 -0
  247. data/lib/git/repository/object_operations.rb +1101 -0
  248. data/lib/git/repository/path_resolver.rb +207 -0
  249. data/lib/git/repository/remote_operations.rb +753 -0
  250. data/lib/git/repository/shared_private.rb +51 -0
  251. data/lib/git/repository/staging.rb +390 -0
  252. data/lib/git/repository/stashing.rb +107 -0
  253. data/lib/git/repository/status_operations.rb +180 -0
  254. data/lib/git/repository/worktree_operations.rb +159 -0
  255. data/lib/git/repository.rb +264 -1
  256. data/lib/git/stash.rb +85 -4
  257. data/lib/git/stash_info.rb +104 -0
  258. data/lib/git/stashes.rb +130 -13
  259. data/lib/git/status.rb +226 -18
  260. data/lib/git/tag_delete_failure.rb +31 -0
  261. data/lib/git/tag_delete_result.rb +63 -0
  262. data/lib/git/tag_info.rb +105 -0
  263. data/lib/git/version.rb +109 -2
  264. data/lib/git/version_constraint.rb +81 -0
  265. data/lib/git/worktree.rb +120 -5
  266. data/lib/git/worktrees.rb +107 -7
  267. data/lib/git.rb +117 -56
  268. data/redesign/1_architecture_existing.md +54 -18
  269. data/redesign/2_architecture_redesign.md +365 -46
  270. data/redesign/3_architecture_implementation.md +1451 -54
  271. data/tasks/gem_tasks.rake +4 -0
  272. data/tasks/npm_tasks.rake +7 -0
  273. data/tasks/rspec.rake +48 -0
  274. data/tasks/test.rake +13 -1
  275. data/tasks/yard.rake +34 -7
  276. metadata +349 -20
  277. data/lib/git/index.rb +0 -6
  278. data/lib/git/path.rb +0 -38
  279. data/lib/git/working_directory.rb +0 -6
  280. /data/{release-please-config.json → .release-please-config.json} +0 -0
@@ -33,11 +33,11 @@ jobs:
33
33
 
34
34
  steps:
35
35
  - name: Checkout Code
36
- uses: actions/checkout@v4
36
+ uses: actions/checkout@v6
37
37
 
38
38
  - name: Setup Java
39
39
  if: matrix.java_version != ''
40
- uses: actions/setup-java@v4
40
+ uses: actions/setup-java@v5
41
41
  with:
42
42
  distribution: 'temurin'
43
43
  java-version: ${{ matrix.java_version }}
@@ -50,71 +50,7 @@ jobs:
50
50
 
51
51
  - name: Run Build
52
52
  run: bundle exec rake default
53
+ timeout-minutes: 15
53
54
 
54
55
  - name: Test Gem
55
56
  run: bundle exec rake test:gem
56
-
57
- # The branch ruleset cannot require the matrix job above directly. A required status
58
- # check is matched by name, and `build`'s name is a template -- GitHub only expands it
59
- # into "Ruby 3.2 on ubuntu-latest" and friends when it evaluates the matrix. The
60
- # job-level `if:` short-circuits before that happens, so a release PR reports one check
61
- # named literally "Ruby ${{ matrix.ruby }} on ${{ matrix.operating-system }}" and the
62
- # six expanded names never report at all. Required checks that never report block a PR
63
- # indefinitely rather than passing, which is what stranded the v5.0.5 release PR on
64
- # main and the v4.4.1 release PR here.
65
- #
66
- # So the ruleset requires this job instead: one stable name, no matrix, no template to
67
- # expand. It also decouples the required-check list from the matrix, so adding or
68
- # dropping a Ruby version no longer needs a matching ruleset edit.
69
- #
70
- # Unlike main, this branch has no separate lint job: `rake default` runs RuboCop and
71
- # YARD inside every matrix leg, so this one check covers everything CI does here.
72
- #
73
- # This job carries the same release-PR guard as the matrix above, so that a release PR
74
- # reports it as skipped rather than as a success for specs that never ran. Skipping is
75
- # safe here and was not safe for `build`: this job's name is a literal string, so the
76
- # check run exists and reports a skipped conclusion whether or not the job runs, and
77
- # rulesets treat skipped as passing. A matrix job's name does not exist at all until the
78
- # matrix is evaluated, which is the whole reason this job exists.
79
- #
80
- # `always()` is load-bearing and must stay. Without a status check function a job-level
81
- # `if:` implies `success()`, so a failing matrix would skip this job -- and a skipped
82
- # required check counts as passing, meaning a red build would merge. `always()` forces a
83
- # real verdict on every run that is not a release PR. `!cancelled()` is not a substitute:
84
- # a cancelled run would then skip the gate, and a skipped conclusion is one rulesets treat
85
- # as passing -- so a build that never finished would stop blocking the merge.
86
- #
87
- # The case below accepts `success` only. `build` and this job now carry the same release-PR
88
- # guard, so this job runs exactly when `build` ran; a `skipped` result would mean the two
89
- # guards have drifted apart, and failing closed on it turns that into a loud failure rather
90
- # than a silent pass.
91
- #
92
- # Note that a matrix leg marked `experimental: Yes` carries continue-on-error, and a
93
- # continue-on-error failure does not fail the job as a whole -- so it does not fail this
94
- # gate either. That is what `experimental` is for; no leg currently sets it.
95
- build-complete:
96
- name: All Specs Passed
97
-
98
- needs: [build]
99
-
100
- # Report a verdict on every non-release PR regardless of the matrix result, and skip
101
- # on release PRs, where the matrix was never meant to run.
102
- if: >-
103
- always() &&
104
- (github.event_name == 'workflow_dispatch' ||
105
- (github.event_name == 'pull_request' && !startsWith(github.event.pull_request.head.ref, 'release-please--')))
106
-
107
- runs-on: ubuntu-latest
108
-
109
- steps:
110
- - name: Check the result of the build job
111
- run: |
112
- case "${{ needs.build.result }}" in
113
- success)
114
- echo "build: ${{ needs.build.result }}"
115
- ;;
116
- *)
117
- echo "::error::build: ${{ needs.build.result }}"
118
- exit 1
119
- ;;
120
- esac
@@ -21,7 +21,7 @@ jobs:
21
21
 
22
22
  steps:
23
23
  - name: Checkout
24
- uses: actions/checkout@v4
24
+ uses: actions/checkout@v6
25
25
  with: { fetch-depth: 0 }
26
26
 
27
27
  - name: Check Commit Messages
@@ -37,11 +37,11 @@ jobs:
37
37
 
38
38
  steps:
39
39
  - name: Checkout Code
40
- uses: actions/checkout@v4
40
+ uses: actions/checkout@v6
41
41
 
42
42
  - name: Setup Java
43
43
  if: matrix.java_version != ''
44
- uses: actions/setup-java@v4
44
+ uses: actions/setup-java@v5
45
45
  with:
46
46
  distribution: 'temurin'
47
47
  java-version: ${{ matrix.java_version }}
@@ -30,16 +30,15 @@ jobs:
30
30
 
31
31
  steps:
32
32
  - name: Checkout project
33
- uses: actions/checkout@v4
33
+ uses: actions/checkout@v6
34
34
 
35
35
  - name: Create release
36
- uses: googleapis/release-please-action@v4
36
+ uses: googleapis/release-please-action@v5
37
37
  id: release
38
38
  with:
39
39
  token: ${{ secrets.AUTO_RELEASE_TOKEN }}
40
- config-file: release-please-config.json
40
+ config-file: .release-please-config.json
41
41
  manifest-file: .release-please-manifest.json
42
- target-branch: ${{ github.ref_name }}
43
42
 
44
43
  - name: Setup ruby
45
44
  uses: ruby/setup-ruby@v1
data/.gitignore CHANGED
@@ -2,6 +2,8 @@
2
2
  *.kpf
3
3
  *.sw?
4
4
  .DS_Store
5
+ .bundle/
6
+ vendor/bundle/
5
7
  coverage
6
8
  doc
7
9
  .yardoc
@@ -12,3 +14,9 @@ node_modules
12
14
  package-lock.json
13
15
  ai-prompt.erb
14
16
  rubocop-report.json
17
+
18
+ # rspec failure tracking
19
+ .rspec_status
20
+
21
+ # generated git reference docs
22
+ git-reference/
data/.husky/pre-commit ADDED
@@ -0,0 +1,13 @@
1
+ #!/bin/sh
2
+
3
+ branch=$(git branch --show-current)
4
+
5
+ protected_branches="main 4.x"
6
+
7
+ for protected in $protected_branches; do
8
+ if [ "$branch" = "$protected" ]; then
9
+ echo "ERROR: Direct commits to '$branch' are not allowed."
10
+ echo " Create a topic branch first: git switch -c <branch-name>"
11
+ exit 1
12
+ fi
13
+ done
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "4.4.1"
2
+ ".": "4.1.2"
3
3
  }
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --require spec_helper
2
+ --format Fuubar
3
+ --color
data/.rubocop.yml CHANGED
@@ -3,6 +3,10 @@ inherit_from: .rubocop_todo.yml
3
3
  inherit_gem:
4
4
  main_branch_shared_rubocop_config: config/rubocop.yml
5
5
 
6
+ inherit_mode:
7
+ merge:
8
+ - Exclude
9
+
6
10
  # Don't care about complexity offenses in the TestUnit tests This exclusions
7
11
  # will be removed when we switch to RSpec.
8
12
  Metrics/CyclomaticComplexity:
@@ -33,12 +37,13 @@ Layout/LineLength:
33
37
  - "tests/units/**/*"
34
38
  - "*.gemspec"
35
39
 
36
- # Testing and gemspec DSL results in large blocks
40
+ # Testing, gemspec, and command DSL blocks are intentionally long
37
41
  Metrics/BlockLength:
38
42
  Exclude:
39
43
  - "tests/test_helper.rb"
40
44
  - "tests/units/**/*"
41
45
  - "*.gemspec"
46
+ - "lib/git/commands/**/*.rb"
42
47
 
43
48
  # Don't force every test class to be described
44
49
  Style/Documentation:
@@ -46,8 +51,7 @@ Style/Documentation:
46
51
  - "tests/units/**/*"
47
52
 
48
53
  Style/OneClassPerFile:
49
- Exclude:
50
- - "tests/units/**/*"
54
+ Enabled: false
51
55
 
52
56
  AllCops:
53
57
  # Pin this project to Ruby 3.1 in case the shared config above is upgraded to 3.2
data/.rubocop_todo.yml CHANGED
@@ -1,12 +1,30 @@
1
1
  # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2025-08-17 04:52:22 UTC using RuboCop version 1.79.2.
2
+ # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 999`
3
+ # on 2026-01-28 20:48:52 UTC using RuboCop version 1.82.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 2
10
- # Configuration parameters: CountComments, CountAsOne.
9
+ # Offense count: 1
10
+ # This cop supports safe autocorrection (--autocorrect).
11
+ # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
12
+ # URISchemes: http, https
13
+ Layout/LineLength:
14
+ Exclude:
15
+ - 'spec/unit/git/commands/tag/list_spec.rb'
16
+
17
+ # Offense count: 4
18
+ # Configuration parameters: CountComments, Max, CountAsOne.
11
19
  Metrics/ClassLength:
12
- Max: 1170
20
+ Exclude:
21
+ - 'lib/git/base.rb'
22
+ - 'lib/git/branch.rb'
23
+ - 'lib/git/commands/arguments.rb'
24
+ - 'lib/git/lib.rb'
25
+
26
+ # Offense count: 1
27
+ # Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns.
28
+ Metrics/MethodLength:
29
+ Exclude:
30
+ - 'lib/git/commands/tag/list.rb'
data/.yardopts CHANGED
@@ -3,6 +3,7 @@
3
3
  --markup-provider=redcarpet
4
4
  --markup=markdown
5
5
  --fail-on-warning
6
+ --plugin yard_example_test
6
7
  -
7
8
  README.md
8
9
  CHANGELOG.md
data/CHANGELOG.md CHANGED
@@ -5,72 +5,6 @@
5
5
 
6
6
  # Change Log
7
7
 
8
- ## [4.4.1](https://github.com/ruby-git/ruby-git/compare/v4.4.0...v4.4.1) (2026-08-09)
9
-
10
-
11
- ### Bug Fixes
12
-
13
- * Pin LC_ALL to a locale that exists on the host platform ([690360e](https://github.com/ruby-git/ruby-git/commit/690360e386bac1dafb7b5bd0adbf10072e834f69)), closes [#1669](https://github.com/ruby-git/ruby-git/issues/1669)
14
-
15
-
16
- ### Other Changes
17
-
18
- * Add a matrix-free All Specs Passed gate to 4.x ([5352d6d](https://github.com/ruby-git/ruby-git/commit/5352d6d4edfcb52c544139e265fb3636bc1937b7)), closes [#1675](https://github.com/ruby-git/ruby-git/issues/1675)
19
- * Skip the All Specs Passed gate on release PRs ([52473b2](https://github.com/ruby-git/ruby-git/commit/52473b21a733499eb274a7b03d53f1a0efbf5c86)), closes [#1675](https://github.com/ruby-git/ruby-git/issues/1675)
20
-
21
- ## [4.4.0](https://github.com/ruby-git/ruby-git/compare/v4.3.2...v4.4.0) (2026-07-11)
22
-
23
-
24
- ### Features
25
-
26
- * Allow deprecation behavior env var ([fd622be](https://github.com/ruby-git/ruby-git/commit/fd622bea6513d78f2dbed8dc19c110be80d07ec8))
27
- * Warn on first direct access to Git::Lib constant ([52059c6](https://github.com/ruby-git/ruby-git/commit/52059c63d5c23b4d80025b95332e946aba942f0c))
28
-
29
-
30
- ### Other Changes
31
-
32
- * Improve YARD documentation for Git::Branch ([#1277](https://github.com/ruby-git/ruby-git/issues/1277)) ([0769bf9](https://github.com/ruby-git/ruby-git/commit/0769bf91a21ecb24d48a31439de073b689bc62b6))
33
-
34
- ## [4.3.2](https://github.com/ruby-git/ruby-git/compare/v4.3.1...v4.3.2) (2026-03-31)
35
-
36
-
37
- ### Bug Fixes
38
-
39
- * Return empty result from git log on repo with no commits ([d275b25](https://github.com/ruby-git/ruby-git/commit/d275b25b03201ebaca13a81a75e3295ed85c40c7)), closes [#1155](https://github.com/ruby-git/ruby-git/issues/1155)
40
-
41
-
42
- ### Other Changes
43
-
44
- * Add docker-git script to test with specific git versions ([0cc0e80](https://github.com/ruby-git/ruby-git/commit/0cc0e804758e73520c124622a7ba49ff97f2deaf))
45
- * Address newly reported rubocop offenses ([a37412d](https://github.com/ruby-git/ruby-git/commit/a37412d6a1cf2b927a6173ea767a7ad9f1290af6))
46
-
47
- ## [4.3.1](https://github.com/ruby-git/ruby-git/compare/v4.3.0...v4.3.1) (2026-02-20)
48
-
49
-
50
- ### Bug Fixes
51
-
52
- * Resolve NoMethodError for Git::Base#cat_file ([#1058](https://github.com/ruby-git/ruby-git/issues/1058)) ([310bc73](https://github.com/ruby-git/ruby-git/commit/310bc73c1a62e7548eb43e5d3ef844af0b266fc7))
53
-
54
- ## [4.3.0](https://github.com/ruby-git/ruby-git/compare/v4.2.0...v4.3.0) (2026-01-15)
55
-
56
-
57
- ### Features
58
-
59
- * Add support for git fsck command ([c402003](https://github.com/ruby-git/ruby-git/commit/c402003ce0c626a5c4737838cddc4b932638c172)), closes [#218](https://github.com/ruby-git/ruby-git/issues/218)
60
-
61
- ## [4.2.0](https://github.com/ruby-git/ruby-git/compare/v4.1.2...v4.2.0) (2026-01-11)
62
-
63
-
64
- ### Features
65
-
66
- * Add deprecation warning for .path accessor ([8af4543](https://github.com/ruby-git/ruby-git/commit/8af4543a25a46bf40ed7a05b31cea1a5b17e3f0b))
67
-
68
-
69
- ### Other Changes
70
-
71
- * Add target-branch to release-please action ([13e041e](https://github.com/ruby-git/ruby-git/commit/13e041ebb76587b90549896a4c9b9b872f60696a))
72
- * Set 4.x manifest to start from 4.1.1 ([1ccee62](https://github.com/ruby-git/ruby-git/commit/1ccee62cdd832a6de2307b0a61ceb593548e7fe1))
73
-
74
8
  ## [4.1.2](https://github.com/ruby-git/ruby-git/compare/v4.1.1...v4.1.2) (2026-01-10)
75
9
 
76
10