git 5.0.1 → 5.0.3
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/.claude/commands/address-copilot-reviews.md +14 -0
- data/.claude/settings.json +16 -0
- data/.claude/skills +1 -0
- data/.github/copilot-instructions.md +0 -12
- data/.github/hooks/run-bin-setup-once.sh +9 -3
- data/.github/pull_request_template.md +2 -0
- data/.github/skills/command-implementation/REFERENCE.md +1 -1
- data/.github/skills/command-implementation/SKILL.md +2 -2
- data/.github/skills/facade-implementation/SKILL.md +2 -2
- data/.github/skills/rspec-unit-testing-standards/SKILL.md +52 -6
- data/.github/workflows/continuous_integration.yml +12 -0
- data/.gitignore +6 -0
- data/.release-please-manifest.json +1 -1
- data/.rspec +0 -1
- data/CHANGELOG.md +59 -0
- data/CLAUDE.md +11 -0
- data/CONTRIBUTING.md +295 -153
- data/README.md +8 -3
- data/Rakefile +2 -13
- data/git.gemspec +17 -5
- data/lib/git/commands/arguments.rb +2 -2
- data/lib/git/commands/remote/remove.rb +3 -5
- data/lib/git/commands/remote/rename.rb +7 -2
- data/lib/git/factories.rb +813 -0
- data/lib/git/parsers/diff.rb +2 -3
- data/lib/git/parsers/grep.rb +1 -1
- data/lib/git/path_resolver.rb +206 -0
- data/lib/git/repository.rb +0 -1
- data/lib/git/version.rb +1 -1
- data/lib/git.rb +2 -1
- data/tasks/rspec.rake +93 -30
- metadata +13 -9
- data/lib/git/repository/factories.rb +0 -814
- data/lib/git/repository/path_resolver.rb +0 -207
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6dcf907e2c0ccb6d916a9aa1d43f6c768e49555465a484e0231d919cb889b889
|
|
4
|
+
data.tar.gz: 5cce608675a41031f79318065e8c11125f9f23a154ab2ae6f578192010b04367
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42dbbce6613ecd406e64771bb03d85416a4eae0fe12183fee03640292f5f18700175788c35c55836ad2d572bde6857421ed6cae8f9d7520dcd8bd12b498ae809
|
|
7
|
+
data.tar.gz: d55dd4bd23e700aacd23d8b850adada2e0e3a8f90176515e5de3b5213e43282ac5e8e105d500243bc54a0655472368e00becf4b6c01e59e4baf842223f8f89a7
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Address all unresolved Copilot review threads on the active pull request
|
|
3
|
+
argument-hint: "[PR number — defaults to the PR for the current branch]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Follow the shared agent prompt in
|
|
7
|
+
`.github/prompts/iteratively-address-copilot-reviews.prompt.md` exactly. That file
|
|
8
|
+
is the canonical instructions for this task and is shared with other AI agents; read
|
|
9
|
+
it before doing anything else.
|
|
10
|
+
|
|
11
|
+
@.github/prompts/iteratively-address-copilot-reviews.prompt.md
|
|
12
|
+
|
|
13
|
+
If `$ARGUMENTS` is non-empty, treat it as the pull request number to operate on
|
|
14
|
+
instead of detecting the PR from the current branch.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
3
|
+
"hooks": {
|
|
4
|
+
"SessionStart": [
|
|
5
|
+
{
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "\"$CLAUDE_PROJECT_DIR/.github/hooks/run-bin-setup-once.sh\"",
|
|
10
|
+
"timeout": 900
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
data/.claude/skills
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
../.github/skills
|
|
@@ -22,18 +22,6 @@ fine to use `#` in footer values such as `Closes: #999` or `Refs: #999`.
|
|
|
22
22
|
- **RuboCop:** Use `RuboCop` for prose and `rubocop` for CLI or gem names. Never use
|
|
23
23
|
`Rubocop`.
|
|
24
24
|
|
|
25
|
-
## Project Commands
|
|
26
|
-
|
|
27
|
-
| Purpose | Command |
|
|
28
|
-
| --- | --- |
|
|
29
|
-
| First-time project or new worktree setup | `bin/setup` |
|
|
30
|
-
| Run all tests and linters (CI-equivalent) | `bundle exec rake` |
|
|
31
|
-
| Run all RSpec tests | `bundle exec rake spec` |
|
|
32
|
-
| Run RSpec unit tests | `bundle exec rake spec:unit` |
|
|
33
|
-
| Run RSpec integration tests | `bundle exec rake spec:integration` |
|
|
34
|
-
| Run a specific RSpec spec | `bundle exec rspec <path>` |
|
|
35
|
-
| Run linters | `bundle exec rake rubocop yard build` |
|
|
36
|
-
|
|
37
25
|
## Branch & PR Strategy
|
|
38
26
|
|
|
39
27
|
| Target | When |
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
+
# This hook is shared by every agent configured for this repo (GitHub Copilot via
|
|
5
|
+
# .github/hooks/, Claude Code via .claude/settings.json), so do not assume the
|
|
6
|
+
# caller's working directory.
|
|
7
|
+
command -v git >/dev/null 2>&1 || exit 0
|
|
8
|
+
cd "$(dirname "${BASH_SOURCE[0]}")/../.." || exit 0
|
|
9
|
+
|
|
4
10
|
# Skip if this repo does not use bin/setup.
|
|
5
11
|
[[ -x "./bin/setup" ]] || exit 0
|
|
6
12
|
|
|
7
|
-
# Keep setup idempotent per-worktree.
|
|
8
|
-
|
|
9
|
-
marker="$(git rev-parse --git-path
|
|
13
|
+
# Keep setup idempotent per-worktree. The marker is shared across agents so that
|
|
14
|
+
# cloning and opening the repo in two different tools does not run setup twice.
|
|
15
|
+
marker="$(git rev-parse --git-path agent-bin-setup.done 2>/dev/null)" || exit 0
|
|
10
16
|
[[ -f "$marker" ]] && exit 0
|
|
11
17
|
|
|
12
18
|
./bin/setup
|
|
@@ -16,4 +16,6 @@ Review our [guidelines for contributing](https://github.com/ruby-git/ruby-git/bl
|
|
|
16
16
|
- [ ] I ran `bundle exec rake` locally on this branch and it passed (see
|
|
17
17
|
[Local development setup](../CONTRIBUTING.md#local-development-setup)).
|
|
18
18
|
- [ ] Tests added/updated as needed.
|
|
19
|
+
- [ ] `bundle exec rake spec:unit` reports 100% line and branch coverage (see
|
|
20
|
+
[Test coverage policy](../CONTRIBUTING.md#test-coverage-policy)).
|
|
19
21
|
- [ ] Documentation updated where applicable (README and/or YARD).
|
|
@@ -908,7 +908,7 @@ For migration PRs, verify process constraints:
|
|
|
908
908
|
- each slice is independently revertible
|
|
909
909
|
- refactor-only changes are not mixed with unrelated behavior changes
|
|
910
910
|
- quality gates pass for the slice — discover tasks via
|
|
911
|
-
`bundle exec ruby -e "require 'rake'; load 'Rakefile'; puts Rake::Task['default
|
|
911
|
+
`bundle exec ruby -e "require 'rake'; load 'Rakefile'; puts Rake::Task['default'].prerequisites"`
|
|
912
912
|
and run each individually via `bundle exec rake <task>`, fixing failures before
|
|
913
913
|
advancing
|
|
914
914
|
|
|
@@ -188,11 +188,11 @@ This skill supports three modes. Determine which mode applies before starting:
|
|
|
188
188
|
requirements](REFERENCE.md#phased-rollout-requirements).
|
|
189
189
|
|
|
190
190
|
5. **Run quality gates** — discover the prerequisite tasks for
|
|
191
|
-
`default
|
|
191
|
+
`default` and run them sequentially, fixing failures before
|
|
192
192
|
advancing:
|
|
193
193
|
|
|
194
194
|
```bash
|
|
195
|
-
bundle exec ruby -e "require 'rake'; load 'Rakefile'; puts Rake::Task['default
|
|
195
|
+
bundle exec ruby -e "require 'rake'; load 'Rakefile'; puts Rake::Task['default'].prerequisites"
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
Run each listed task **individually** in order via `bundle exec rake <task>`
|
|
@@ -224,11 +224,11 @@ This skill supports three modes. Determine which mode applies before starting:
|
|
|
224
224
|
- has tests that verify call-shape compatibility when classification is
|
|
225
225
|
`legacy-contract` (positional hash and/or keyword-arg / `**opts` forms where required)
|
|
226
226
|
|
|
227
|
-
5. **Run quality gates** — discover the prerequisite tasks for `default
|
|
227
|
+
5. **Run quality gates** — discover the prerequisite tasks for `default`
|
|
228
228
|
and run them sequentially, fixing failures before advancing:
|
|
229
229
|
|
|
230
230
|
```bash
|
|
231
|
-
bundle exec ruby -e "require 'rake'; load 'Rakefile'; puts Rake::Task['default
|
|
231
|
+
bundle exec ruby -e "require 'rake'; load 'Rakefile'; puts Rake::Task['default'].prerequisites"
|
|
232
232
|
```
|
|
233
233
|
|
|
234
234
|
Run each listed task **individually** in order via `bundle exec rake <task>`
|
|
@@ -68,9 +68,13 @@ Adoption and enforcement notes:
|
|
|
68
68
|
- Apply these rules as hard requirements for new and modified unit specs.
|
|
69
69
|
- Legacy specs may violate some rules; treat those as incremental cleanup work.
|
|
70
70
|
- Branch and line coverage are both reported by SimpleCov in this repository.
|
|
71
|
-
- `
|
|
72
|
-
`
|
|
73
|
-
|
|
71
|
+
- `minimum_coverage: { line: 100, branch: 100 }` is configured and enforced: a full
|
|
72
|
+
`rake spec:unit` run fails when either threshold is missed, and CI fails the pull
|
|
73
|
+
request with it. Rule 21 is a build gate, not just a review check. See the
|
|
74
|
+
[Test coverage policy](../../../CONTRIBUTING.md#test-coverage-policy) in
|
|
75
|
+
`CONTRIBUTING.md` for the full policy.
|
|
76
|
+
- Focused runs (`SPEC=<glob> rake spec:unit`, or `rspec <file>`) report coverage but
|
|
77
|
+
do not fail on it, since they load all of `lib/` while exercising only a slice.
|
|
74
78
|
|
|
75
79
|
## Related skills
|
|
76
80
|
|
|
@@ -484,10 +488,50 @@ Every conditional path through the public interface must be exercised by at leas
|
|
|
484
488
|
one example. If a branch cannot be reached through the public interface, that is a
|
|
485
489
|
design smell.
|
|
486
490
|
|
|
491
|
+
This is enforced by the build: a full `rake spec:unit` run fails below 100% line or
|
|
492
|
+
branch coverage, and the failure output names each uncovered line and branch.
|
|
493
|
+
|
|
494
|
+
When a branch is hard to cover, apply these in order:
|
|
495
|
+
|
|
496
|
+
1. **Reach it through the public interface** — if it is reachable, test it.
|
|
497
|
+
2. **Delete it** — a branch unreachable through the public interface is usually dead
|
|
498
|
+
code. Removing it is preferable to excluding it.
|
|
499
|
+
3. **Exclude it with `# simplecov:disable`** — the last resort, per the exception below.
|
|
500
|
+
|
|
487
501
|
> **Exception:** Defensive guards that require breaking OS-level invariants to reach
|
|
488
502
|
> (e.g., `raise "unreachable"` that would require triggering out-of-memory) may be
|
|
489
|
-
> excluded. Mark them explicitly with `# :
|
|
490
|
-
> — never leave branches silently uncovered.
|
|
503
|
+
> excluded. Mark them explicitly with a `# simplecov:disable` directive carrying a
|
|
504
|
+
> reason — never leave branches silently uncovered. Cover the smallest possible span,
|
|
505
|
+
> and expect a reviewer to challenge it. `lib/` currently contains no coverage
|
|
506
|
+
> directives.
|
|
507
|
+
|
|
508
|
+
Prefer the inline form for a single line. It applies only to its own line and needs no
|
|
509
|
+
matching `enable`, so a region can never be left open by accident:
|
|
510
|
+
|
|
511
|
+
```ruby
|
|
512
|
+
raise 'unreachable' # simplecov:disable defensive guard; only reachable on OOM
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
Use the block form only for a genuine span, and close it explicitly:
|
|
516
|
+
|
|
517
|
+
```ruby
|
|
518
|
+
# simplecov:disable branch platform-specific fallback; not reachable on MRI
|
|
519
|
+
...
|
|
520
|
+
# simplecov:enable branch
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
Always name the narrowest criterion that solves the problem — `line`, `branch`,
|
|
524
|
+
`method`, or a comma-separated combination — and write the reason after it, so the
|
|
525
|
+
required justification lives in the directive.
|
|
526
|
+
|
|
527
|
+
> **Review check:** verify the criterion is spelled exactly. A word SimpleCov does not
|
|
528
|
+
> recognize is parsed as free-form reason text, which silently widens the directive to
|
|
529
|
+
> all three criteria rather than failing.
|
|
530
|
+
|
|
531
|
+
> **Coverage is a floor on evidence, not a proof of correctness.** Never write an
|
|
532
|
+
> example whose only purpose is to execute a line. Such a test turns the report green
|
|
533
|
+
> while violating [Rule 24](#rule-24-must-assert-observable-behavior-not-implementation-details),
|
|
534
|
+
> and must be rejected in review.
|
|
491
535
|
|
|
492
536
|
### Rule 22 (MUST): Error assertions must specify both the error class and a message pattern
|
|
493
537
|
|
|
@@ -614,7 +658,9 @@ After writing or modifying tests, verify compliance before finishing:
|
|
|
614
658
|
|
|
615
659
|
1. **Run the specs:** `bundle exec rspec spec/unit/path/to_spec.rb`
|
|
616
660
|
2. **Check branch coverage** meets 100% (Rule 21) — open `coverage/index.html` and
|
|
617
|
-
confirm no uncovered branches in the class under test.
|
|
661
|
+
confirm no uncovered lines or branches in the class under test. A focused run
|
|
662
|
+
reports coverage but does not fail on it; `bundle exec rake spec:unit` is the
|
|
663
|
+
authority and will fail below 100%, naming each uncovered line and branch.
|
|
618
664
|
3. **Re-check MUST rules.** Scan the spec against every MUST rule. Fix violations.
|
|
619
665
|
4. **Run in random order** (Rule 27): `bundle exec rspec spec/unit/path/to_spec.rb --order rand`
|
|
620
666
|
|
|
@@ -53,5 +53,17 @@ jobs:
|
|
|
53
53
|
run: bundle exec rake default
|
|
54
54
|
timeout-minutes: 15
|
|
55
55
|
|
|
56
|
+
# The unit suite enforces 100% line and branch coverage (see the "Test coverage
|
|
57
|
+
# policy" section of CONTRIBUTING.md). The failure log names the uncovered lines
|
|
58
|
+
# and branches; this artifact adds the browsable HTML report for the same run.
|
|
59
|
+
- name: Upload Coverage Report
|
|
60
|
+
if: failure()
|
|
61
|
+
uses: actions/upload-artifact@v7
|
|
62
|
+
with:
|
|
63
|
+
name: coverage-ruby-${{ matrix.ruby }}-${{ matrix.operating-system }}
|
|
64
|
+
path: coverage/
|
|
65
|
+
if-no-files-found: ignore
|
|
66
|
+
retention-days: 7
|
|
67
|
+
|
|
56
68
|
- name: Test Gem
|
|
57
69
|
run: bundle exec rake test:gem
|
data/.gitignore
CHANGED
|
@@ -21,4 +21,10 @@ rubocop-report.json
|
|
|
21
21
|
# generated git reference docs
|
|
22
22
|
git-reference/
|
|
23
23
|
|
|
24
|
+
# git versions built by bin/build-git-versions
|
|
25
|
+
git-versions/
|
|
26
|
+
|
|
24
27
|
tmp
|
|
28
|
+
|
|
29
|
+
# per-developer Claude Code overrides (shared config is in .claude/settings.json)
|
|
30
|
+
.claude/settings.local.json
|
data/.rspec
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,65 @@
|
|
|
5
5
|
|
|
6
6
|
# Change Log
|
|
7
7
|
|
|
8
|
+
## [5.0.3](https://github.com/ruby-git/ruby-git/compare/v5.0.2...v5.0.3) (2026-08-07)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Drop unsupported -- separator from remote remove/rename commands ([8ec466f](https://github.com/ruby-git/ruby-git/commit/8ec466f8b282a5e94abd7d499bc26a92d94b2fc3))
|
|
14
|
+
* Remove unreachable case branch in Patch#apply_file_mode ([896fc49](https://github.com/ruby-git/ruby-git/commit/896fc49e3c2c03c401fe1b213c3f75bb40730521))
|
|
15
|
+
* Remove unreachable nil check in Git::Parsers::Grep.parse ([74e919a](https://github.com/ruby-git/ruby-git/commit/74e919a401126ad4415615f92cc9597e966239c6))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Other Changes
|
|
19
|
+
|
|
20
|
+
* Add Claude Code support alongside GitHub Copilot ([37f7d6a](https://github.com/ruby-git/ruby-git/commit/37f7d6a14c6d53bcf5b9644b8023d323290a5977))
|
|
21
|
+
* Add unit spec for Git::EncodingUtils ([5f0f10e](https://github.com/ruby-git/ruby-git/commit/5f0f10e4db78324bbe453de49598564a25f3428a))
|
|
22
|
+
* Consolidate parallel and serial spec rake tasks ([49616b1](https://github.com/ruby-git/ruby-git/commit/49616b12f52c6941a8617afbf7c56e7d7d5fe0f6))
|
|
23
|
+
* Cover :index option in Git::Factories#worktree_open_options_after_init ([efeba22](https://github.com/ruby-git/ruby-git/commit/efeba2294bb05327489a6523c46f26dc7392a84e))
|
|
24
|
+
* Cover #path when both src and dst are nil ([3a1a05a](https://github.com/ruby-git/ruby-git/commit/3a1a05a9be13057a1fc304df5008866634179124))
|
|
25
|
+
* Cover edge-case branches in Git::Parsers::Diff ([38d8b3f](https://github.com/ruby-git/ruby-git/commit/38d8b3f88f4f76a65776e9f6b8b87c6bb839e710))
|
|
26
|
+
* Cover Errno::ESRCH timeout-race rescue in run_process_executer ([899bf36](https://github.com/ruby-git/ruby-git/commit/899bf36399489038524cecf1d7ac2c606df03bde))
|
|
27
|
+
* Cover Git::Branch#merge ([71c0ea3](https://github.com/ruby-git/ruby-git/commit/71c0ea39d4c786a38245a8fb95fd93235ee03903))
|
|
28
|
+
* Cover Git::Branch#stashes ([27ba130](https://github.com/ruby-git/ruby-git/commit/27ba130a6cd3ef78171d1bb20230459c3f678a3a))
|
|
29
|
+
* Cover Git::Diff#name_status ([fa2ee98](https://github.com/ruby-git/ruby-git/commit/fa2ee98fd4613177843d285f7bc4a2ffb44ca79c))
|
|
30
|
+
* Cover Git::Factories#parse_clone_stderr unparseable-output branch ([65aa9b9](https://github.com/ruby-git/ruby-git/commit/65aa9b9318c7f8a8986c2aaae7dd0af0aeec4d69))
|
|
31
|
+
* Cover Git::Parsers::CatFile.each_header without trailing separator ([b7a9ed9](https://github.com/ruby-git/ruby-git/commit/b7a9ed93e03dcbd22a4fb25e9bb7b9c49647262d))
|
|
32
|
+
* Cover Git::Parsers::LsTree.parse with no tab-separated filename ([98b9ebf](https://github.com/ruby-git/ruby-git/commit/98b9ebf03c49f51c76b2e56dd670a9f68f220da8))
|
|
33
|
+
* Cover Git::Parsers::Remote.apply_pair unrecognized-variable branch ([03b10f6](https://github.com/ruby-git/ruby-git/commit/03b10f618a2f012b578ab995120cedbcd96ed8d1))
|
|
34
|
+
* Cover Git::Stashes#save ([7bca04c](https://github.com/ruby-git/ruby-git/commit/7bca04c53e64c747627784773d0c03ad0b9ff2e3))
|
|
35
|
+
* Cover Git.const_missing fallback branch for unrelated constants ([05c3c43](https://github.com/ruby-git/ruby-git/commit/05c3c4350e18bf1403fa314902708cfc40848c70))
|
|
36
|
+
* Cover Git.export ([4bd7f58](https://github.com/ruby-git/ruby-git/commit/4bd7f58432a19385ff55aecca9e89e2d9a96fa4a))
|
|
37
|
+
* Cover normalize_fetch_keys with a String option key ([47fb7fe](https://github.com/ruby-git/ruby-git/commit/47fb7fe061df9177a26ec7ada90b35b902ffc1df))
|
|
38
|
+
* Disable coverage for spec:integration, add SPEC filtering, fix formatters ([cb53d03](https://github.com/ruby-git/ruby-git/commit/cb53d03f8b671873f24368aadcafec638de32345))
|
|
39
|
+
* Document the project test coverage policy ([d378c1e](https://github.com/ruby-git/ruby-git/commit/d378c1e8b75e0c4209e17cc040ed36eb93053797))
|
|
40
|
+
* Enforce 100% unit test coverage on pull requests ([a446098](https://github.com/ruby-git/ruby-git/commit/a446098af548039b2c8b68bbb6562a53cb79fe40))
|
|
41
|
+
* Guard checkout-index nonexistent-path spec for git < 2.30.0 ([cf212a9](https://github.com/ruby-git/ruby-git/commit/cf212a98b41218a7940ce54aa9b7c56a630412c3))
|
|
42
|
+
* Guard worktree repair spec for git < 2.29.0 ([c527fb1](https://github.com/ruby-git/ruby-git/commit/c527fb15c2f21f9be5913192d43c847cf49681eb))
|
|
43
|
+
* **merge:** Fix incorrect version-gated failure expectation in quit_spec ([24c5ba4](https://github.com/ruby-git/ruby-git/commit/24c5ba4ce77b02413485d226a94b283f6af9d110))
|
|
44
|
+
* Read the gem version without loading lib/git/version.rb ([45c4b14](https://github.com/ruby-git/ruby-git/commit/45c4b14e944fcb43bda800823e377cf954ce2d3b))
|
|
45
|
+
* Require git 2.39.0 for maintenance register/unregister --config-file specs ([5b1fd52](https://github.com/ruby-git/ruby-git/commit/5b1fd527c39e4b3f1796851795a44694d94f4402))
|
|
46
|
+
* Skip get-urlmatch scope spec on git < 2.42.0 ([e1ede7a](https://github.com/ruby-git/ruby-git/commit/e1ede7adddea28b654a183c618fc2336b5ffb83b))
|
|
47
|
+
* Upgrade simplecov and simplecov-rspec to ~> 1.0 ([65e92b9](https://github.com/ruby-git/ruby-git/commit/65e92b9a9a621435efbf2a0855d48c47bb62425d))
|
|
48
|
+
|
|
49
|
+
## [5.0.2](https://github.com/ruby-git/ruby-git/compare/v5.0.1...v5.0.2) (2026-08-02)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Bug Fixes
|
|
53
|
+
|
|
54
|
+
* Add bin/build-git-versions and bin/test-git-versions scripts ([3314503](https://github.com/ruby-git/ruby-git/commit/3314503708efcec2f386ca97bb6d96309a6c5c1a))
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Other Changes
|
|
58
|
+
|
|
59
|
+
* Align CONTRIBUTING.md with current architecture and testing conventions ([60ac8e9](https://github.com/ruby-git/ruby-git/commit/60ac8e940776a3fb4efe46a98574ca5bbfcd718e))
|
|
60
|
+
* Allow disabling SimpleCov via COVERAGE=false env var ([3788418](https://github.com/ruby-git/ruby-git/commit/37884189eb646013628f78b6671e9876f0ebb925))
|
|
61
|
+
* Allow disabling SimpleCov via COVERAGE=false env var ([3788418](https://github.com/ruby-git/ruby-git/commit/37884189eb646013628f78b6671e9876f0ebb925))
|
|
62
|
+
* Avoid git-version-dependent all-zero SHA in stash store integration spec ([82a15e5](https://github.com/ruby-git/ruby-git/commit/82a15e57ebca03df3c3802f153c3545bc46920f4))
|
|
63
|
+
* Make 5.0.0 release more prominent in README ([2c8c42d](https://github.com/ruby-git/ruby-git/commit/2c8c42d30a7d7d35e03f1c4f8489fa49c866cded))
|
|
64
|
+
* Move Git::Repository::Factories and PathResolver to Git namespace ([dd0ae7b](https://github.com/ruby-git/ruby-git/commit/dd0ae7b34b912187f150d56b38f6eeb14b8882bf))
|
|
65
|
+
* Update README badges ([079a121](https://github.com/ruby-git/ruby-git/commit/079a1211216666f190583b2bfd3124ebb823ae58))
|
|
66
|
+
|
|
8
67
|
## [5.0.1](https://github.com/ruby-git/ruby-git/compare/v5.0.0...v5.0.1) (2026-07-30)
|
|
9
68
|
|
|
10
69
|
|
data/CLAUDE.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file exists so Claude Code picks up the same project instructions as every
|
|
4
|
+
other AI coding agent used in this repository.
|
|
5
|
+
|
|
6
|
+
**Do not add project guidance here.** The canonical instructions live in
|
|
7
|
+
[`.github/copilot-instructions.md`](.github/copilot-instructions.md) and are
|
|
8
|
+
imported below. Edit that file so all agents stay in sync. Reserve this file for
|
|
9
|
+
guidance that applies *only* to Claude Code.
|
|
10
|
+
|
|
11
|
+
@.github/copilot-instructions.md
|