git 4.4.0 → 4.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98b554ddb65a29cb16fc266ea5466c2919c312f5021729ec3719ded044a53a91
4
- data.tar.gz: c98533fda6126f92b5deba44d7ed38878e537fcbd02508702c5f8d1d99d26355
3
+ metadata.gz: a24c04e4ade577716464aaf17cdac3f1e1d7e860e60dcd9ed964eb8f0f503b4b
4
+ data.tar.gz: 7913679e60e68c2f51d9189c150dbf8310244afd71a38a0a7ff88845e58d2d96
5
5
  SHA512:
6
- metadata.gz: 529bc860265d31541e62381dd7e551405e74cf494da695e740578d0e9c5409ea9151f823a44ad6d089f74d533787fd02f1ed9ca6030656a82ffb72a1936fbef0
7
- data.tar.gz: 3131c1f4ae9e9fb177d6120a6f460e40ed7e592045718e733f861f4289dc4e6668e04eb8f8ab2c2b8fc73c299327817a89ae66f28369382c7856c2ec3d1853d1
6
+ metadata.gz: 3e768e8f510d5919d7bacae8095da345e8446546e39e0567aaa2b242700fc4a2045bd6328bd8c5bfa0876375380b679f07aaa33992ebf4828b5298999e033201
7
+ data.tar.gz: a80276c4a8d613aae86a1adfdaa5f39aabfd3f85e9b4f3dc703612a4fea7afc452f37b9b5d4f3a6d632a2a1e8d12427a5f6f35697ed8daa16e8b2aaebfca5d29
@@ -53,3 +53,68 @@ jobs:
53
53
 
54
54
  - name: Test Gem
55
55
  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
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "4.4.0"
2
+ ".": "4.4.1"
3
3
  }
data/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@
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
+
8
21
  ## [4.4.0](https://github.com/ruby-git/ruby-git/compare/v4.3.2...v4.4.0) (2026-07-11)
9
22
 
10
23
 
data/lib/git/lib.rb CHANGED
@@ -2075,7 +2075,7 @@ module Git
2075
2075
  # @example Unsetting an environment variable (used by worktree_command_line)
2076
2076
  # env_overrides('GIT_INDEX_FILE' => nil)
2077
2077
  # # => { 'GIT_DIR' => '/path/to/.git', 'GIT_WORK_TREE' => '/path/to/worktree',
2078
- # # 'GIT_INDEX_FILE' => nil, 'GIT_SSH' => <git_ssh_value>, 'LC_ALL' => 'en_US.UTF-8' }
2078
+ # # 'GIT_INDEX_FILE' => nil, 'GIT_SSH' => <git_ssh_value>, 'LC_ALL' => <pinned_locale> }
2079
2079
  # # When passed to Process.spawn, GIT_INDEX_FILE will be unset in the environment
2080
2080
  #
2081
2081
  # @see https://ruby-doc.org/core/Process.html#method-c-spawn Process.spawn
@@ -2088,10 +2088,67 @@ module Git
2088
2088
  'GIT_WORK_TREE' => @git_work_dir,
2089
2089
  'GIT_INDEX_FILE' => @git_index_file,
2090
2090
  'GIT_SSH' => resolved_git_ssh,
2091
- 'LC_ALL' => 'en_US.UTF-8'
2091
+ # Pin the locale so git's behavior does not depend on the user's environment.
2092
+ # Added for issue #753, where a German user's `git branch` output
2093
+ # ("* (HEAD losgelöst bei origin/25.1)") broke branch parsing.
2094
+ #
2095
+ # The pin has two halves, and both are load-bearing here:
2096
+ #
2097
+ # - Messages: keeps git's human-readable text in English. `BRANCH_LINE_REGEXP`
2098
+ # matches the literal English strings "(HEAD detached at ...)" and
2099
+ # "(not a branch)" in `git branch -a` output, which is the exact issue #753
2100
+ # failure mode.
2101
+ # - Ctype: makes git's regex engine match *characters* rather than *bytes*.
2102
+ # Under a C ctype, `grep` and `log --grep` silently return wrong answers —
2103
+ # with exit status zero — for any pattern whose metacharacters span
2104
+ # non-ASCII text.
2105
+ #
2106
+ # So do not "simplify" this to `C`: that yields English messages and a broken
2107
+ # ctype, which is the worst of both. A pinned locale the host does not have
2108
+ # degrades to that same C ctype, which is why each branch below has to name a
2109
+ # locale that actually exists on the platform it applies to:
2110
+ #
2111
+ # - Non-Darwin: `C.UTF-8`. Stock Debian, Ubuntu, and RHEL images generate no
2112
+ # `en_US.UTF-8`, so pinning it there produced exactly the silent breakage
2113
+ # above. (musl ignores the locale name for ctype, so Alpine is UTF-8 either
2114
+ # way.)
2115
+ # - Darwin: `en_US.UTF-8`, which every macOS release ships. `C.UTF-8` did not
2116
+ # arrive until macOS 15, so macOS 11–14 — including Intel Macs that are
2117
+ # hardware-capped below 15 — would break under it. Delete this branch once
2118
+ # macOS 14 and earlier are out of support.
2119
+ #
2120
+ # Windows takes the non-Darwin branch, where the value makes no difference:
2121
+ # Git for Windows folds case and runs PCRE in UTF mode under every value, and
2122
+ # matches bytes for `.` and POSIX classes under every value — measured on git
2123
+ # 2.55.0 against `en_US.UTF-8`, `C.UTF-8`, `C`, and no pin at all.
2124
+ #
2125
+ # RHEL 7 (glibc 2.17) has neither locale and gets a C ctype whatever is pinned.
2126
+ # It is EOL, and there is deliberately no public override for this value.
2127
+ 'LC_ALL' => darwin_platform? ? 'en_US.UTF-8' : 'C.UTF-8'
2092
2128
  }.merge(additional_overrides)
2093
2129
  end
2094
2130
 
2131
+ # Whether this process is running on macOS
2132
+ #
2133
+ # Checks `RUBY_DESCRIPTION` as well as `RUBY_PLATFORM` because JRuby reports
2134
+ # `RUBY_PLATFORM` as `"java"` on every host and records the real platform only in
2135
+ # `RUBY_DESCRIPTION` (as, for example, `"... [arm64-darwin]"`). Testing
2136
+ # `RUBY_PLATFORM` alone would put JRuby on macOS onto the non-Darwin branch, which is
2137
+ # the one platform pairing that branch must not be given. This is the same detection
2138
+ # the test suite uses for Windows, and for the same reason.
2139
+ #
2140
+ # Test the platform plainly rather than sniffing the Darwin version: `RUBY_PLATFORM`
2141
+ # records the version Ruby was *built* against, so a Ruby built on macOS 14 still
2142
+ # reports `darwin23` when run on macOS 15.
2143
+ #
2144
+ # @return [Boolean] true if this process is running on macOS
2145
+ #
2146
+ # @api private
2147
+ #
2148
+ def darwin_platform?
2149
+ RUBY_PLATFORM.include?('darwin') || RUBY_DESCRIPTION.include?('darwin')
2150
+ end
2151
+
2095
2152
  # Resolve the git_ssh value to use for this instance
2096
2153
  #
2097
2154
  # @return [String, nil] the resolved git_ssh value
data/lib/git/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  module Git
4
4
  # The current gem version
5
5
  # @return [String] the current gem version.
6
- VERSION = '4.4.0'
6
+ VERSION = '4.4.1'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0
4
+ version: 4.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Chacon and others
@@ -310,8 +310,8 @@ licenses:
310
310
  metadata:
311
311
  homepage_uri: http://github.com/ruby-git/ruby-git
312
312
  source_code_uri: http://github.com/ruby-git/ruby-git
313
- changelog_uri: https://rubydoc.info/gems/git/4.4.0/file/CHANGELOG.md
314
- documentation_uri: https://rubydoc.info/gems/git/4.4.0
313
+ changelog_uri: https://rubydoc.info/gems/git/4.4.1/file/CHANGELOG.md
314
+ documentation_uri: https://rubydoc.info/gems/git/4.4.1
315
315
  rubygems_mfa_required: 'true'
316
316
  rdoc_options: []
317
317
  require_paths:
@@ -328,7 +328,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
328
328
  version: '0'
329
329
  requirements:
330
330
  - git 2.28.0 or greater
331
- rubygems_version: 4.0.10
331
+ rubygems_version: 4.0.16
332
332
  specification_version: 4
333
333
  summary: An API to create, read, and manipulate Git repositories
334
334
  test_files: []