git 3.0.1 → 3.1.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/.commitlintrc.yml +38 -0
- data/.github/workflows/continuous_integration.yml +7 -3
- data/.github/workflows/enforce_conventional_commits.yml +28 -0
- data/.github/workflows/experimental_continuous_integration.yml +8 -1
- data/.github/workflows/release.yml +52 -0
- data/.gitignore +2 -0
- data/.husky/commit-msg +1 -0
- data/.release-please-manifest.json +3 -0
- data/.yardopts +0 -1
- data/CHANGELOG.md +28 -0
- data/CONTRIBUTING.md +104 -31
- data/README.md +28 -36
- data/Rakefile +7 -0
- data/lib/git/lib.rb +2 -0
- data/lib/git/log.rb +7 -2
- data/lib/git/version.rb +1 -1
- data/package.json +10 -0
- data/release-please-config.json +36 -0
- metadata +10 -4
- data/RELEASING.md +0 -85
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 511ce73ebd49de3ef2985b430f6aef69828bef58f15f4272ff835328b1275fc3
|
4
|
+
data.tar.gz: a223cc03fef4b9968b5ff30ba2521ab841e9c4e15e311dbb7d94bec16b466373
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bb93e9a89b396c30ed1ce535baa972a9d52a9c8afe63cbdee55520881cb9d0921eb85cea447779ee78469812a3b939de8a9a47a10996f47502e8bf1bd9cdb05
|
7
|
+
data.tar.gz: d9b075c42d95fd121986e3a79fc87acbd634aefa06228a139104ac189c7258351ee88a4607638184d92f03668d67253412b39d50a9a8994c63943b38353d2f8a
|
data/.commitlintrc.yml
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
extends: '@commitlint/config-conventional'
|
3
|
+
|
4
|
+
rules:
|
5
|
+
# See: https://commitlint.js.org/reference/rules.html
|
6
|
+
#
|
7
|
+
# Rules are made up by a name and a configuration array. The configuration
|
8
|
+
# array contains:
|
9
|
+
#
|
10
|
+
# * Severity [0..2]: 0 disable rule, 1 warning if violated, or 2 error if
|
11
|
+
# violated
|
12
|
+
# * Applicability [always|never]: never inverts the rule
|
13
|
+
# * Value: value to use for this rule (if applicable)
|
14
|
+
#
|
15
|
+
# Run `npx commitlint --print-config` to see the current setting for all
|
16
|
+
# rules.
|
17
|
+
#
|
18
|
+
header-max-length: [2, always, 100] # Header can not exceed 100 chars
|
19
|
+
|
20
|
+
type-case: [2, always, lower-case] # Type must be lower case
|
21
|
+
type-empty: [2, never] # Type must not be empty
|
22
|
+
|
23
|
+
# Supported conventional commit types
|
24
|
+
type-enum: [2, always, [build, ci, chore, docs, feat, fix, perf, refactor, revert, style, test]]
|
25
|
+
|
26
|
+
scope-case: [2, always, lower-case] # Scope must be lower case
|
27
|
+
|
28
|
+
# Error if subject is one of these cases (encourages lower-case)
|
29
|
+
subject-case: [2, never, [sentence-case, start-case, pascal-case, upper-case]]
|
30
|
+
subject-empty: [2, never] # Subject must not be empty
|
31
|
+
subject-full-stop: [2, never, "."] # Subject must not end with a period
|
32
|
+
|
33
|
+
body-leading-blank: [2, always] # Body must have a blank line before it
|
34
|
+
body-max-line-length: [2, always, 100] # Body lines can not exceed 100 chars
|
35
|
+
|
36
|
+
footer-leading-blank: [2, always] # Footer must have a blank line before it
|
37
|
+
footer-max-line-length: [2, always, 100] # Footer lines can not exceed 100 chars
|
38
|
+
|
@@ -1,15 +1,19 @@
|
|
1
1
|
name: CI
|
2
2
|
|
3
3
|
on:
|
4
|
-
push:
|
5
|
-
branches: [master,v1]
|
6
4
|
pull_request:
|
7
|
-
branches: [master
|
5
|
+
branches: [master]
|
8
6
|
workflow_dispatch:
|
9
7
|
|
10
8
|
jobs:
|
11
9
|
build:
|
12
10
|
name: Ruby ${{ matrix.ruby }} on ${{ matrix.operating-system }}
|
11
|
+
|
12
|
+
# Skip this job if triggered by a release PR
|
13
|
+
if: >-
|
14
|
+
github.event_name == 'workflow_dispatch' ||
|
15
|
+
(github.event_name == 'pull_request' && !startsWith(github.event.pull_request.head.ref, 'release-please--'))
|
16
|
+
|
13
17
|
runs-on: ${{ matrix.operating-system }}
|
14
18
|
continue-on-error: ${{ matrix.experimental == 'Yes' }}
|
15
19
|
env: { JAVA_OPTS: -Djdk.io.File.enableADS=true }
|
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
name: Conventional Commits
|
3
|
+
|
4
|
+
permissions:
|
5
|
+
contents: read
|
6
|
+
|
7
|
+
on:
|
8
|
+
pull_request:
|
9
|
+
branches:
|
10
|
+
- master
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
commit-lint:
|
14
|
+
name: Verify Conventional Commits
|
15
|
+
|
16
|
+
# Skip this job if this is a release PR
|
17
|
+
if: (github.event_name == 'pull_request' && !startsWith(github.event.pull_request.head.ref, 'release-please--'))
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- name: Checkout
|
23
|
+
uses: actions/checkout@v4
|
24
|
+
with: { fetch-depth: 0 }
|
25
|
+
|
26
|
+
- name: Check Commit Messages
|
27
|
+
uses: wagoid/commitlint-github-action@v6
|
28
|
+
with: { configFile: .commitlintrc.yml }
|
@@ -2,12 +2,19 @@ name: CI Experimental
|
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
5
|
-
branches: [master
|
5
|
+
branches: [master]
|
6
|
+
|
6
7
|
workflow_dispatch:
|
7
8
|
|
8
9
|
jobs:
|
9
10
|
build:
|
10
11
|
name: Ruby ${{ matrix.ruby }} on ${{ matrix.operating-system }}
|
12
|
+
|
13
|
+
# Skip this job if triggered by pushing a release commit
|
14
|
+
if: >-
|
15
|
+
github.event_name == 'workflow_dispatch' ||
|
16
|
+
(github.event_name == 'push' && !startsWith(github.event.head_commit.message, 'chore: release '))
|
17
|
+
|
11
18
|
runs-on: ${{ matrix.operating-system }}
|
12
19
|
continue-on-error: true
|
13
20
|
env: { JAVA_OPTS: -Djdk.io.File.enableADS=true }
|
@@ -0,0 +1,52 @@
|
|
1
|
+
---
|
2
|
+
name: Release Gem
|
3
|
+
|
4
|
+
description: |
|
5
|
+
This workflow creates a new release on GitHub and publishes the gem to
|
6
|
+
RubyGems.org.
|
7
|
+
|
8
|
+
The workflow uses the `googleapis/release-please-action` to handle the
|
9
|
+
release creation process and the `rubygems/release-gem` action to publish
|
10
|
+
the gem to rubygems.org
|
11
|
+
|
12
|
+
on:
|
13
|
+
push:
|
14
|
+
branches: ["master"]
|
15
|
+
|
16
|
+
workflow_dispatch:
|
17
|
+
|
18
|
+
jobs:
|
19
|
+
release:
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
|
22
|
+
environment:
|
23
|
+
name: RubyGems
|
24
|
+
url: https://rubygems.org/gems/git
|
25
|
+
|
26
|
+
permissions:
|
27
|
+
contents: write
|
28
|
+
pull-requests: write
|
29
|
+
id-token: write
|
30
|
+
|
31
|
+
steps:
|
32
|
+
- name: Checkout project
|
33
|
+
uses: actions/checkout@v4
|
34
|
+
|
35
|
+
- name: Create release
|
36
|
+
uses: googleapis/release-please-action@v4
|
37
|
+
id: release
|
38
|
+
with:
|
39
|
+
token: ${{ secrets.AUTO_RELEASE_TOKEN }}
|
40
|
+
config-file: release-please-config.json
|
41
|
+
manifest-file: .release-please-manifest.json
|
42
|
+
|
43
|
+
- name: Setup ruby
|
44
|
+
uses: ruby/setup-ruby@v1
|
45
|
+
if: ${{ steps.release.outputs.release_created }}
|
46
|
+
with:
|
47
|
+
bundler-cache: true
|
48
|
+
ruby-version: ruby
|
49
|
+
|
50
|
+
- name: Push to RubyGems.org
|
51
|
+
uses: rubygems/release-gem@v1
|
52
|
+
if: ${{ steps.release.outputs.release_created }}
|
data/.gitignore
CHANGED
data/.husky/commit-msg
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
npx --no-install commitlint --edit "$1"
|
data/.yardopts
CHANGED
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,34 @@
|
|
5
5
|
|
6
6
|
# Change Log
|
7
7
|
|
8
|
+
## [3.1.0](https://github.com/ruby-git/ruby-git/compare/v3.0.2...v3.1.0) (2025-05-18)
|
9
|
+
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
* Make Git::Log support the git log --merges option ([df3b07d](https://github.com/ruby-git/ruby-git/commit/df3b07d0f14d79c6c77edc04550c1ad0207c920a))
|
14
|
+
|
15
|
+
|
16
|
+
### Other Changes
|
17
|
+
|
18
|
+
* Announce and document guidelines for using Conventional Commits ([a832259](https://github.com/ruby-git/ruby-git/commit/a832259314aa9c8bdd7719e50d425917df1df831))
|
19
|
+
* Skip continuous integration workflow for release PRs ([f647a18](https://github.com/ruby-git/ruby-git/commit/f647a18c8a3ae78f49c8cd485db4660aa10a92fc))
|
20
|
+
* Skip the experiemental build workflow if a release commit is pushed to master ([3dab0b3](https://github.com/ruby-git/ruby-git/commit/3dab0b34e41393a43437c53a53b96895fd3d2cc5))
|
21
|
+
|
22
|
+
## [3.0.2](https://github.com/ruby-git/ruby-git/compare/v3.0.1...v3.0.2) (2025-05-15)
|
23
|
+
|
24
|
+
|
25
|
+
### Bug Fixes
|
26
|
+
|
27
|
+
* Trigger the release workflow on a change to 'master' insetad of 'main' ([c8611f1](https://github.com/ruby-git/ruby-git/commit/c8611f1e68e73825fd16bd475752a40b0088d4ae))
|
28
|
+
|
29
|
+
|
30
|
+
### Other Changes
|
31
|
+
|
32
|
+
* Automate continuous delivery workflow ([06480e6](https://github.com/ruby-git/ruby-git/commit/06480e65e2441348230ef10e05cc1c563d0e7ea8))
|
33
|
+
* Enforce conventional commit messages with a GitHub action ([1da4c44](https://github.com/ruby-git/ruby-git/commit/1da4c44620a3264d4e837befd3f40416c5d8f1d8))
|
34
|
+
* Enforce conventional commit messages with husky and commitlint ([7ebe0f8](https://github.com/ruby-git/ruby-git/commit/7ebe0f8626ecb2f0da023b903b82f7332d8afaf6))
|
35
|
+
|
8
36
|
## v3.0.1 (2025-05-14)
|
9
37
|
|
10
38
|
[Full Changelog](https://github.com/ruby-git/ruby-git/compare/v3.0.0..v3.0.1)
|
data/CONTRIBUTING.md
CHANGED
@@ -5,28 +5,30 @@
|
|
5
5
|
|
6
6
|
# Contributing to the git gem
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
8
|
+
- [Summary](#summary)
|
9
|
+
- [How to contribute](#how-to-contribute)
|
10
|
+
- [How to report an issue or request a feature](#how-to-report-an-issue-or-request-a-feature)
|
11
|
+
- [How to submit a code or documentation change](#how-to-submit-a-code-or-documentation-change)
|
12
|
+
- [Commit your changes to a fork of `ruby-git`](#commit-your-changes-to-a-fork-of-ruby-git)
|
13
|
+
- [Create a pull request](#create-a-pull-request)
|
14
|
+
- [Get your pull request reviewed](#get-your-pull-request-reviewed)
|
15
|
+
- [Design philosophy](#design-philosophy)
|
16
|
+
- [Direct mapping to git commands](#direct-mapping-to-git-commands)
|
17
|
+
- [Parameter naming](#parameter-naming)
|
18
|
+
- [Output processing](#output-processing)
|
19
|
+
- [Coding standards](#coding-standards)
|
20
|
+
- [Commit message guidelines](#commit-message-guidelines)
|
21
|
+
- [What does this mean for contributors?](#what-does-this-mean-for-contributors)
|
22
|
+
- [What to know about Conventional Commits](#what-to-know-about-conventional-commits)
|
23
|
+
- [Unit tests](#unit-tests)
|
24
|
+
- [Continuous integration](#continuous-integration)
|
25
|
+
- [Documentation](#documentation)
|
26
|
+
- [Building a specific version of the Git command-line](#building-a-specific-version-of-the-git-command-line)
|
27
|
+
- [Install pre-requisites](#install-pre-requisites)
|
28
|
+
- [Obtain Git source code](#obtain-git-source-code)
|
29
|
+
- [Build git](#build-git)
|
30
|
+
- [Use the new Git version](#use-the-new-git-version)
|
31
|
+
- [Licensing](#licensing)
|
30
32
|
|
31
33
|
## Summary
|
32
34
|
|
@@ -63,7 +65,8 @@ thoroughly as possible to describe the issue or feature request.
|
|
63
65
|
There is a three-step process for submitting code or documentation changes:
|
64
66
|
|
65
67
|
1. [Commit your changes to a fork of
|
66
|
-
`ruby-git`](#commit-your-changes-to-a-fork-of-ruby-git)
|
68
|
+
`ruby-git`](#commit-your-changes-to-a-fork-of-ruby-git) using [Conventional
|
69
|
+
Commits](#commit-message-guidelines)
|
67
70
|
2. [Create a pull request](#create-a-pull-request)
|
68
71
|
3. [Get your pull request reviewed](#get-your-pull-request-reviewed)
|
69
72
|
|
@@ -153,18 +156,88 @@ behavior.
|
|
153
156
|
To ensure high-quality contributions, all pull requests must meet the following
|
154
157
|
requirements:
|
155
158
|
|
156
|
-
###
|
159
|
+
### Commit message guidelines
|
157
160
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
161
|
+
To enhance our development workflow, enable automated changelog generation, and pave
|
162
|
+
the way for Continuous Delivery, the `ruby-git` project has adopted the [Conventional
|
163
|
+
Commits standard](https://www.conventionalcommits.org/en/v1.0.0/) for all commit
|
164
|
+
messages.
|
165
|
+
|
166
|
+
This structured approach to commit messages allows us to:
|
167
|
+
|
168
|
+
- **Automate versioning and releases:** Tools can now automatically determine the
|
169
|
+
semantic version bump (patch, minor, major) based on the types of commits merged.
|
170
|
+
- **Generate accurate changelogs:** We can automatically create and update a
|
171
|
+
`CHANGELOG.md` file, providing a clear history of changes for users and
|
172
|
+
contributors.
|
173
|
+
- **Improve commit history readability:** A standardized format makes it easier for
|
174
|
+
everyone to understand the nature of changes at a glance.
|
175
|
+
|
176
|
+
#### What does this mean for contributors?
|
177
|
+
|
178
|
+
Going forward, all commits to this repository **MUST** adhere to the [Conventional
|
179
|
+
Commits standard](https://www.conventionalcommits.org/en/v1.0.0/). Commits not
|
180
|
+
adhering to this standard will cause the CI build to fail. PRs will not be merged if
|
181
|
+
they include non-conventional commits.
|
182
|
+
|
183
|
+
A git pre-commit hook may be installed to validate your conventional commit messages
|
184
|
+
before pushing them to GitHub by running `bin/setup` in the project root.
|
185
|
+
|
186
|
+
#### What to know about Conventional Commits
|
187
|
+
|
188
|
+
The simplist conventional commit is in the form `type: description` where `type`
|
189
|
+
indicates the type of change and `description` is your usual commit message (with
|
190
|
+
some limitations).
|
191
|
+
|
192
|
+
- Types include: `feat`, `fix`, `docs`, `test`, `refactor`, and `chore`. See the full
|
193
|
+
list of types supported in [.commitlintrc.yml](.commitlintrc.yml).
|
194
|
+
- The description must (1) not start with an upper case letter, (2) be no more than
|
195
|
+
100 characters, and (3) not end with punctuation.
|
196
|
+
|
197
|
+
Examples of valid commits:
|
198
|
+
|
199
|
+
- `feat: add the --merges option to Git::Lib.log`
|
200
|
+
- `fix: exception thrown by Git::Lib.log when repo has no commits`
|
201
|
+
- `docs: add conventional commit announcement to README.md`
|
202
|
+
|
203
|
+
Commits that include breaking changes must include an exclaimation mark before the
|
204
|
+
colon:
|
205
|
+
|
206
|
+
- `feat!: removed Git::Base.commit_force`
|
207
|
+
|
208
|
+
The commit messages will drive how the version is incremented for each release:
|
209
|
+
|
210
|
+
- a release containing a **breaking change** will do a **major** version increment
|
211
|
+
- a release containing a **new feature** will do a **minor** increment
|
212
|
+
- a release containing **neither a breaking change nor a new feature** will do a
|
213
|
+
**patch** version increment
|
214
|
+
|
215
|
+
The full conventional commit format is:
|
216
|
+
|
217
|
+
```text
|
218
|
+
<type>[optional scope][!]: <description>
|
219
|
+
|
220
|
+
[optional body]
|
221
|
+
|
222
|
+
[optional footer(s)]
|
223
|
+
```
|
224
|
+
|
225
|
+
- `optional body` may include multiple lines of descriptive text limited to 100 chars
|
226
|
+
each
|
227
|
+
- `optional footers` only uses `BREAKING CHANGE: <description>` where description
|
228
|
+
should describe the nature of the backward incompatibility.
|
229
|
+
|
230
|
+
Use of the `BREAKING CHANGE:` footer flags a backward incompatible change even if it
|
231
|
+
is not flagged with an exclaimation mark after the `type`. Other footers are allowed
|
232
|
+
by not acted upon.
|
233
|
+
|
234
|
+
See [the Conventional Commits
|
235
|
+
specification](https://www.conventionalcommits.org/en/v1.0.0/) for more details.
|
163
236
|
|
164
237
|
### Unit tests
|
165
238
|
|
166
|
-
|
167
|
-
|
239
|
+
- All changes must be accompanied by new or modified unit tests.
|
240
|
+
- The entire test suite must pass when `bundle exec rake default` is run from the
|
168
241
|
project's local working copy.
|
169
242
|
|
170
243
|
While working on specific features, you can run individual test files or a group of
|
data/README.md
CHANGED
@@ -9,17 +9,34 @@
|
|
9
9
|
[](https://rubydoc.info/gems/git/)
|
10
10
|
[](https://rubydoc.info/gems/git/file/CHANGELOG.md)
|
11
11
|
[](https://github.com/ruby-git/ruby-git/actions?query=workflow%3ACI)
|
12
|
-
[](https://conventionalcommits.org)
|
13
|
+
|
14
|
+
- [📢 We've Switched to Conventional Commits 📢](#-weve-switched-to-conventional-commits-)
|
15
|
+
- [Summary](#summary)
|
16
|
+
- [Install](#install)
|
17
|
+
- [Major Objects](#major-objects)
|
18
|
+
- [Errors Raised By This Gem](#errors-raised-by-this-gem)
|
19
|
+
- [Specifying And Handling Timeouts](#specifying-and-handling-timeouts)
|
20
|
+
- [Examples](#examples)
|
21
|
+
- [Ruby version support policy](#ruby-version-support-policy)
|
22
|
+
- [License](#license)
|
23
|
+
|
24
|
+
## 📢 We've Switched to Conventional Commits 📢
|
25
|
+
|
26
|
+
To enhance our development workflow, enable automated changelog generation, and pave
|
27
|
+
the way for Continuous Delivery, the `ruby-git` project has adopted the [Conventional
|
28
|
+
Commits standard](https://www.conventionalcommits.org/en/v1.0.0/) for all commit
|
29
|
+
messages.
|
30
|
+
|
31
|
+
Going forward, all commits to this repository **MUST** adhere to the Conventional
|
32
|
+
Commits standard. Commits not adhering to this standard will cause the CI build to
|
33
|
+
fail. PRs will not be merged if they include non-conventional commits.
|
34
|
+
|
35
|
+
A git pre-commit hook may be installed to validate your conventional commit messages
|
36
|
+
before pushing them to GitHub by running `bin/setup` in the project root.
|
37
|
+
|
38
|
+
Read more about this change in the [Commit Message Guidelines section of
|
39
|
+
CONTRIBUTING.md](CONTRIBUTING.md#commit-message-guidelines)
|
23
40
|
|
24
41
|
## Summary
|
25
42
|
|
@@ -34,31 +51,6 @@ Get started by obtaining a repository object by:
|
|
34
51
|
|
35
52
|
Methods that can be called on a repository object are documented in [Git::Base](https://rubydoc.info/gems/git/Git/Base)
|
36
53
|
|
37
|
-
## v2.x Release
|
38
|
-
|
39
|
-
git 2.0.0 has recently been released. Please give it a try.
|
40
|
-
|
41
|
-
**If you have problems with the 2.x release, open an issue and use the 1.x version
|
42
|
-
instead.** We will do our best to fix your issues in a timely fashion.
|
43
|
-
|
44
|
-
**JRuby on Windows is not yet supported by the 2.x release line. Users running JRuby
|
45
|
-
on Windows should continue to use the 1.x release line.**
|
46
|
-
|
47
|
-
The changes in this major release include:
|
48
|
-
|
49
|
-
* Added a dependency on the activesupport gem to use the deprecation functionality
|
50
|
-
* Create a policy of supported Ruby versions to support only non-EOL Ruby versions
|
51
|
-
* Create a policy of supported Git CLI versions (released 2020-12-25)
|
52
|
-
* Update the required Ruby version to at least 3.0 (released 2020-07-27)
|
53
|
-
* Update the required Git command line version to at least 2.28
|
54
|
-
* Update how CLI commands are called to use the [process_executer](https://github.com/main-branch/process_executer)
|
55
|
-
gem which is built on top of [Kernel.spawn](https://ruby-doc.org/3.3.0/Kernel.html#method-i-spawn).
|
56
|
-
See [PR #684](https://github.com/ruby-git/ruby-git/pull/684) for more details
|
57
|
-
on the motivation for this implementation.
|
58
|
-
|
59
|
-
The `master` branch will be used for `2.x` development. If needed, fixes for `1.x`
|
60
|
-
version will be done on the `v1` branch.
|
61
|
-
|
62
54
|
## Install
|
63
55
|
|
64
56
|
Install the gem and add to the application's Gemfile by executing:
|
data/Rakefile
CHANGED
@@ -58,3 +58,10 @@ task :'test:gem' => :install do
|
|
58
58
|
|
59
59
|
puts 'Gem Test Succeeded'
|
60
60
|
end
|
61
|
+
|
62
|
+
# Make it so that calling `rake release` just calls `rake release:rubygem_push` to
|
63
|
+
# avoid creating and pushing a new tag.
|
64
|
+
|
65
|
+
Rake::Task['release'].clear
|
66
|
+
desc 'Customized release task to avoid creating a new tag'
|
67
|
+
task release: 'release:rubygem_push'
|
data/lib/git/lib.rb
CHANGED
@@ -294,6 +294,7 @@ module Git
|
|
294
294
|
# * 'tree' [String] the tree sha
|
295
295
|
# * 'author' [String] the author of the commit and timestamp of when the changes were created
|
296
296
|
# * 'committer' [String] the committer of the commit and timestamp of when the commit was applied
|
297
|
+
# * 'merges' [Boolean] if truthy, only include merge commits (aka commits with 2 or more parents)
|
297
298
|
#
|
298
299
|
# @raise [ArgumentError] if the revision range (specified with :between or :object) is a string starting with a hyphen
|
299
300
|
#
|
@@ -305,6 +306,7 @@ module Git
|
|
305
306
|
|
306
307
|
arr_opts << '--pretty=raw'
|
307
308
|
arr_opts << "--skip=#{opts[:skip]}" if opts[:skip]
|
309
|
+
arr_opts << '--merges' if opts[:merges]
|
308
310
|
|
309
311
|
arr_opts += log_path_options(opts)
|
310
312
|
|
data/lib/git/log.rb
CHANGED
@@ -133,11 +133,16 @@ module Git
|
|
133
133
|
return self
|
134
134
|
end
|
135
135
|
|
136
|
+
def merges
|
137
|
+
dirty_log
|
138
|
+
@merges = true
|
139
|
+
return self
|
140
|
+
end
|
141
|
+
|
136
142
|
def to_s
|
137
143
|
self.map { |c| c.to_s }.join("\n")
|
138
144
|
end
|
139
145
|
|
140
|
-
|
141
146
|
# forces git log to run
|
142
147
|
|
143
148
|
def size
|
@@ -184,7 +189,7 @@ module Git
|
|
184
189
|
log = @base.lib.full_log_commits(
|
185
190
|
count: @max_count, all: @all, object: @object, path_limiter: @path, since: @since,
|
186
191
|
author: @author, grep: @grep, skip: @skip, until: @until, between: @between,
|
187
|
-
cherry: @cherry
|
192
|
+
cherry: @cherry, merges: @merges
|
188
193
|
)
|
189
194
|
@commits = log.map { |c| Git::Object::Commit.new(@base, c['sha'], c) }
|
190
195
|
end
|
data/lib/git/version.rb
CHANGED
data/package.json
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"bootstrap-sha": "31374263eafea4e23352494ef4f6bea3ce62c1b5",
|
3
|
+
"packages": {
|
4
|
+
".": {
|
5
|
+
"release-type": "ruby",
|
6
|
+
"package-name": "git",
|
7
|
+
"changelog-path": "CHANGELOG.md",
|
8
|
+
"version-file": "lib/git/version.rb",
|
9
|
+
"bump-minor-pre-major": true,
|
10
|
+
"bump-patch-for-minor-pre-major": true,
|
11
|
+
"draft": false,
|
12
|
+
"prerelease": false,
|
13
|
+
"include-component-in-tag": false,
|
14
|
+
"pull-request-title-pattern": "chore: release v${version}",
|
15
|
+
"changelog-sections": [
|
16
|
+
{ "type": "feat", "section": "Features", "hidden": false },
|
17
|
+
{ "type": "fix", "section": "Bug Fixes", "hidden": false },
|
18
|
+
{ "type": "build", "section": "Other Changes", "hidden": false },
|
19
|
+
{ "type": "chore", "section": "Other Changes", "hidden": false },
|
20
|
+
{ "type": "ci", "section": "Other Changes", "hidden": false },
|
21
|
+
{ "type": "docs", "section": "Other Changes", "hidden": false },
|
22
|
+
{ "type": "perf", "section": "Other Changes", "hidden": false },
|
23
|
+
{ "type": "refactor", "section": "Other Changes", "hidden": false },
|
24
|
+
{ "type": "revert", "section": "Other Changes", "hidden": false },
|
25
|
+
{ "type": "style", "section": "Other Changes", "hidden": false },
|
26
|
+
{ "type": "test", "section": "Other Changes", "hidden": false }
|
27
|
+
]
|
28
|
+
}
|
29
|
+
},
|
30
|
+
"plugins": [
|
31
|
+
{
|
32
|
+
"type": "sentence-case"
|
33
|
+
}
|
34
|
+
],
|
35
|
+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
|
36
|
+
}
|
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: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon and others
|
@@ -194,11 +194,16 @@ executables: []
|
|
194
194
|
extensions: []
|
195
195
|
extra_rdoc_files: []
|
196
196
|
files:
|
197
|
+
- ".commitlintrc.yml"
|
197
198
|
- ".github/issue_template.md"
|
198
199
|
- ".github/pull_request_template.md"
|
199
200
|
- ".github/workflows/continuous_integration.yml"
|
201
|
+
- ".github/workflows/enforce_conventional_commits.yml"
|
200
202
|
- ".github/workflows/experimental_continuous_integration.yml"
|
203
|
+
- ".github/workflows/release.yml"
|
201
204
|
- ".gitignore"
|
205
|
+
- ".husky/commit-msg"
|
206
|
+
- ".release-please-manifest.json"
|
202
207
|
- ".yardopts"
|
203
208
|
- CHANGELOG.md
|
204
209
|
- CONTRIBUTING.md
|
@@ -206,7 +211,6 @@ files:
|
|
206
211
|
- LICENSE
|
207
212
|
- MAINTAINERS.md
|
208
213
|
- README.md
|
209
|
-
- RELEASING.md
|
210
214
|
- Rakefile
|
211
215
|
- git.gemspec
|
212
216
|
- lib/git.rb
|
@@ -236,14 +240,16 @@ files:
|
|
236
240
|
- lib/git/working_directory.rb
|
237
241
|
- lib/git/worktree.rb
|
238
242
|
- lib/git/worktrees.rb
|
243
|
+
- package.json
|
244
|
+
- release-please-config.json
|
239
245
|
homepage: http://github.com/ruby-git/ruby-git
|
240
246
|
licenses:
|
241
247
|
- MIT
|
242
248
|
metadata:
|
243
249
|
homepage_uri: http://github.com/ruby-git/ruby-git
|
244
250
|
source_code_uri: http://github.com/ruby-git/ruby-git
|
245
|
-
changelog_uri: https://rubydoc.info/gems/git/3.0
|
246
|
-
documentation_uri: https://rubydoc.info/gems/git/3.0
|
251
|
+
changelog_uri: https://rubydoc.info/gems/git/3.1.0/file/CHANGELOG.md
|
252
|
+
documentation_uri: https://rubydoc.info/gems/git/3.1.0
|
247
253
|
rdoc_options: []
|
248
254
|
require_paths:
|
249
255
|
- lib
|
data/RELEASING.md
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
<!--
|
2
|
-
# @markup markdown
|
3
|
-
# @title Releasing
|
4
|
-
-->
|
5
|
-
|
6
|
-
# How to release a new git.gem
|
7
|
-
|
8
|
-
Releasing a new version of the `git` gem requires these steps:
|
9
|
-
|
10
|
-
* [Install Prerequisites](#install-prerequisites)
|
11
|
-
* [Determine the SemVer release type](#determine-the-semver-release-type)
|
12
|
-
* [Create the release](#create-the-release)
|
13
|
-
* [Review the CHANGELOG and release PR](#review-the-changelog-and-release-pr)
|
14
|
-
* [Manually merge the release PR](#manually-merge-the-release-pr)
|
15
|
-
* [Publish the git gem to RubyGems.org](#publish-the-git-gem-to-rubygemsorg)
|
16
|
-
|
17
|
-
## Install Prerequisites
|
18
|
-
|
19
|
-
The following tools need to be installed in order to create the release:
|
20
|
-
|
21
|
-
* [create_githhub_release](https://github.com/main-branch/create_github_release) is used to create the release
|
22
|
-
* [git](https://git-scm.com) is used by `create-github-release` to interact with the local and remote repositories
|
23
|
-
* [gh](https://cli.github.com) is used by `create-github-release` to create the release and PR in GitHub
|
24
|
-
|
25
|
-
On a Mac, these tools can be installed using [gem](https://guides.rubygems.org/rubygems-basics/) and [brew](https://brew.sh):
|
26
|
-
|
27
|
-
```shell
|
28
|
-
$ gem install create_github_release
|
29
|
-
...
|
30
|
-
$ brew install git
|
31
|
-
...
|
32
|
-
$ brew install gh
|
33
|
-
...
|
34
|
-
$
|
35
|
-
```
|
36
|
-
|
37
|
-
## Determine the SemVer release type
|
38
|
-
|
39
|
-
Determine the SemVer version increment that should be applied for the new release:
|
40
|
-
|
41
|
-
* `major`: when the release includes incompatible API or functional changes.
|
42
|
-
* `minor`: when the release adds functionality in a backward-compatible manner
|
43
|
-
* `patch`: when the release includes small user-facing changes that are
|
44
|
-
backward-compatible and do not introduce new functionality.
|
45
|
-
|
46
|
-
## Create the release
|
47
|
-
|
48
|
-
Create the release using the `create-github-release` command. If the release type
|
49
|
-
is `major`, the command is:
|
50
|
-
|
51
|
-
```shell
|
52
|
-
create-github-release major
|
53
|
-
```
|
54
|
-
|
55
|
-
Follow the directions given by the `create-github-release` command to finish the
|
56
|
-
release. Where the instructions given by the command differ than the instructions
|
57
|
-
below, follow the instructions given by the command.
|
58
|
-
|
59
|
-
## Review the CHANGELOG and release PR
|
60
|
-
|
61
|
-
The `create-github-release` command will output a link to the CHANGELOG and the PR
|
62
|
-
it created for the release. Review the CHANGELOG and have someone review and approve
|
63
|
-
the release PR.
|
64
|
-
|
65
|
-
## Manually merge the release PR
|
66
|
-
|
67
|
-
It is important to manually merge the PR so a separate merge commit can be avoided.
|
68
|
-
Use the commands output by the `create-github-release` which will looks like this
|
69
|
-
if you are creating a 2.0.0 release:
|
70
|
-
|
71
|
-
```shell
|
72
|
-
git checkout master
|
73
|
-
git merge --ff-only release-v2.0.0
|
74
|
-
git push
|
75
|
-
```
|
76
|
-
|
77
|
-
This will automatically close the release PR.
|
78
|
-
|
79
|
-
## Publish the git gem to RubyGems.org
|
80
|
-
|
81
|
-
Finally, publish the git gem to RubyGems.org using the following command:
|
82
|
-
|
83
|
-
```shell
|
84
|
-
rake release:rubygem_push
|
85
|
-
```
|