git 1.13.0 → 1.13.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df0d52946aa19627fbff62a47b86f694763e957e1f6d87b9a5e14e6cae46ff1d
4
- data.tar.gz: f2b9e31a9cfb944da55c25b22b54aacd54d788e77ef2808d7cfba0a466cedb8a
3
+ metadata.gz: 29b8c6b76f613f41bcddf2786fe9b164ef2168f265f3b8fdccb9f8f4ead52669
4
+ data.tar.gz: b0f66b11fd1a2eba3640bfa42ff842dcfbd52ab30455026b97ebecad8fd86f0c
5
5
  SHA512:
6
- metadata.gz: 0a812bbdc6aabf7c63d30f96659edfe4a65a141dce613046d3f7e537f5105a80e48f6ae03cb30c4d806243cfd130b49bbc852f43df493191e26dfec2f03551f2
7
- data.tar.gz: b0a634418e93055e3f3c2c5256176515aa990950f4927e2b0ee82055a87543f0695cf13ae4a1f5bd99ab1cec9f8e264153b8aa2ec3f4392c88c5890c17ce7c13
6
+ metadata.gz: bb85d50e45a905b7e71617da29f6194e478b17aed237237e0dd53066a5182c328d4e992494a3b7d26df47223c0e601733400e62d04b7e9fffdf8993c22cd2fb5
7
+ data.tar.gz: ee9d9edbd87615caee4cc073acd2df9a047b46d5ba117997f193a98d28374d214e2994018d3bed10c0e4acad7cd913ba39da25ecc2b0fd973863930f19d0f129
@@ -13,7 +13,7 @@ jobs:
13
13
  strategy:
14
14
  fail-fast: false
15
15
  matrix:
16
- ruby: [2.3, 2.7, 3.0]
16
+ ruby: [2.7, 3.0, 3.1, 3.2]
17
17
  operating-system: [ubuntu-latest]
18
18
  include:
19
19
  - ruby: head
@@ -34,7 +34,7 @@ jobs:
34
34
 
35
35
  steps:
36
36
  - name: Checkout Code
37
- uses: actions/checkout@v2
37
+ uses: actions/checkout@v3
38
38
 
39
39
  - name: Setup Ruby
40
40
  uses: ruby/setup-ruby@v1
data/CHANGELOG.md CHANGED
@@ -5,6 +5,24 @@
5
5
 
6
6
  # Change Log
7
7
 
8
+ ## v1.13.2 (2023-02-02)
9
+
10
+ [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.13.1..v1.13.2)
11
+
12
+ Changes since v1.13.1:
13
+
14
+ * b6e031d Fix `Git::Lib#commit_data` for GPG-signed commits (#610)
15
+ * b12b820 Fix escaped path decoding (#612)
16
+
17
+ ## v1.13.1 (2023-01-12)
18
+
19
+ [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.13.0...v1.13.1)
20
+
21
+ * 667b830 Update the GitHub Action step "actions/checkout" from v2 to v3 (#608)
22
+ * 23a0ac4 Fix version parsing (#605)
23
+ * 429f0bb Update release instructions (#606)
24
+ * 68d76b8 Drop ruby 2.3 build and add 3.1 and 3.2 builds (#607)
25
+
8
26
  ## v1.13.0 (2022-12-10)
9
27
 
10
28
  [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v1.12.0...v1.13.0)
data/RELEASING.md CHANGED
@@ -8,61 +8,63 @@
8
8
  Releasing a new version of the `git` gem requires these steps:
9
9
 
10
10
  - [How to release a new git.gem](#how-to-release-a-new-gitgem)
11
- - [Prepare the release](#prepare-the-release)
12
- - [Create a GitHub release](#create-a-github-release)
13
- - [Build and release the gem](#build-and-release-the-gem)
14
-
15
- These instructions use an example where the current release version is `1.5.0`
16
- and the new release version to be created is `1.6.0.pre1`.
17
-
18
- ## Prepare the release
19
-
20
- From a fork of ruby-git, create a PR containing changes to (1) bump the
21
- version number, (2) update the CHANGELOG.md, and (3) tag the release.
22
-
23
- - Bump the version number in lib/git/version.rb following [Semantic Versioning](https://semver.org)
24
- guidelines
25
- - Add a link in CHANGELOG.md to the release tag which will be created later
26
- in this guide
27
- - Create a new tag using [git-extras](https://github.com/tj/git-extras/blob/master/Commands.md#git-release)
28
- `git release` command
29
- - For example: `git release v1.6.0.pre1`
30
- - These should be the only changes in the PR
31
- - An example of these changes for `v1.6.0.pre1` can be found in [PR #435](https://github.com/ruby-git/ruby-git/pull/435)
32
- - Get the PR reviewed, approved and merged to master.
33
-
34
- ## Create a GitHub release
35
-
36
- On [the ruby-git releases page](https://github.com/ruby-git/ruby-git/releases),
37
- select `Draft a new release`
38
-
39
- - Select the tag corresponding to the version being released `v1.6.0.pre1`
40
- - The Target should be `master`
41
- - For the release description, use the output of [changelog-rs](https://github.com/perlun/changelog-rs)
42
- - A Docker image is provided in [Dockerfile.changelog-rs](https://github.com/ruby-git/ruby-git/blob/master/Dockerfile.changelog-rs)
43
- so you don't have to install changelog-rs or the Rust tool chain. To build the
44
- Docker image, run this command from this project's root directory:
45
- - `docker build --file Dockerfile.changelog-rs --tag changelog-rs .`
46
- - To run the changelog-rs command using this image, run the following command
47
- from this project's root directory (replace the tag names appropriate for the
48
- current release):
49
- - `docker run --rm --volume "$PWD:/worktree" changelog-rs v1.5.0 v1.6.0.pre1`
50
- - Copy the output, omitting the tag header `## v1.6.0.pre1` and paste into
51
- the release description
52
- - The release description can be edited later if needed
53
- - Select the appropriate value for `This is a pre-release`
54
- - Since `v1.6.0.pre1` is a pre-release, check `This is a pre-release`
55
-
56
- ## Build and release the gem
57
-
58
- Clone [ruby-git/ruby-git](https://github.com/ruby-git/ruby-git) directly (not a
59
- fork) and ensure your local working copy is on the master branch
60
-
61
- - Verify that you are not on a fork with the command `git remote -v`
62
- - Verify that the version number is correct by running `rake -T` and inspecting
63
- the output for the `release[remote]` task
64
-
65
- Build the git gem and push it to rubygems.org with the command `rake release`
66
-
67
- - Ensure that your `gem sources list` includes `https://rubygems.org` (in my
68
- case, I usually have my work’s internal gem repository listed)
11
+ - [Install Prerequisites](#install-prerequisites)
12
+ - [Prepare the Release](#prepare-the-release)
13
+ - [Review and Merge the Release](#review-and-merge-the-release)
14
+ - [Build and Release the Gem](#build-and-release-the-gem)
15
+
16
+ These instructions use an example where:
17
+
18
+ - The default branch is `master`
19
+ - The current release version is `1.5.0`
20
+ - You want to create a new *minor* release, `1.6.0`
21
+
22
+ ## Install Prerequisites
23
+
24
+ The following tools need to be installed in order to create the release:
25
+
26
+ - [git](https://git-scm.com) is used to interact with the local and remote repositories
27
+ - [gh](https://cli.github.com) is used to create the release and PR in GitHub
28
+ - [Docker](https://www.docker.com) is used to run the script to create the release notes
29
+
30
+ On a Mac, these tools can be installed using [brew](https://brew.sh):
31
+
32
+ ```shell
33
+ $ brew install git
34
+ ...
35
+ $ brew install gh
36
+ ...
37
+ $ brew install --cask docker
38
+ ...
39
+ $
40
+ ```
41
+
42
+ ## Prepare the Release
43
+
44
+ Bump the version, create release notes, tag the release and create a GitHub release and PR which can be used to review the release.
45
+
46
+ Steps:
47
+
48
+ - Check out the code with `git clone https://github.com/ruby-git/ruby-git ruby-git-v1.6.0 && cd ruby-git-v1.6.0`
49
+ - Install development dependencies using bundle `bundle install`
50
+ - Based upon the nature of the changes, decide on the type of release: `major`, `minor`, or `patch` (in this example we will use `minor`)
51
+ - Run the release script `bundle exec create-github-release minor`
52
+
53
+ ## Review and Merge the Release
54
+
55
+ Have the release PR approved and merge the changes into the `master` branch.
56
+
57
+ **IMPORTANT** DO NOT merge to the `master` branch using the GitHub UI. Instead use the instructions below.
58
+
59
+ Steps:
60
+
61
+ - Get the release PR reviewed and approved in GitHub
62
+ - Merge the changes with the command `git checkout master && git merge --ff-only v1.6.0 && git push`
63
+
64
+ ## Build and Release the Gem
65
+
66
+ Build the gem and publish it to [rubygems.org](https://rubygems.org/gems/git)
67
+
68
+ Steps:
69
+
70
+ - Build and release the gem using rake `bundle exec rake release`
data/git.gemspec CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_runtime_dependency 'rchardet', '~> 1.8'
31
31
 
32
32
  s.add_development_dependency 'bump', '~> 0.10'
33
+ s.add_development_dependency 'create_github_release', '~> 0.2'
33
34
  s.add_development_dependency 'minitar', '~> 0.9'
34
35
  s.add_development_dependency 'rake', '~> 13.0'
35
36
  s.add_development_dependency 'test-unit', '~> 3.3'
@@ -42,7 +42,7 @@ module Git
42
42
  private
43
43
 
44
44
  def extract_octal(path, index)
45
- [path[index + 1..index + 4].to_i(8), 4]
45
+ [path[index + 1..index + 3].to_i(8), 4]
46
46
  end
47
47
 
48
48
  def extract_escape(path, index)
data/lib/git/lib.rb CHANGED
@@ -63,8 +63,6 @@ module Git
63
63
  @git_work_dir = base[:working_directory]
64
64
  end
65
65
  @logger = logger
66
-
67
- Git::Lib.warn_if_old_command(self)
68
66
  end
69
67
 
70
68
  # creates or reinitializes the repository
@@ -223,54 +221,57 @@ module Git
223
221
  def commit_data(sha)
224
222
  sha = sha.to_s
225
223
  cdata = command_lines('cat-file', 'commit', sha)
226
- process_commit_data(cdata, sha, 0)
224
+ process_commit_data(cdata, sha)
227
225
  end
228
226
 
229
- def process_commit_data(data, sha = nil, indent = 4)
227
+ def process_commit_data(data, sha)
230
228
  hsh = {
231
- 'sha' => sha,
232
- 'message' => '',
233
- 'parent' => []
229
+ 'sha' => sha,
230
+ 'parent' => []
234
231
  }
235
232
 
236
- loop do
237
- key, *value = data.shift.split
238
-
239
- break if key.nil?
240
-
233
+ each_cat_file_header(data) do |key, value|
241
234
  if key == 'parent'
242
- hsh['parent'] << value.join(' ')
235
+ hsh['parent'] << value
243
236
  else
244
- hsh[key] = value.join(' ')
237
+ hsh[key] = value
245
238
  end
246
239
  end
247
240
 
248
- hsh['message'] = data.collect {|line| line[indent..-1]}.join("\n") + "\n"
241
+ hsh['message'] = data.join("\n") + "\n"
249
242
 
250
243
  return hsh
251
244
  end
252
245
 
246
+ CAT_FILE_HEADER_LINE = /\A(?<key>\w+) (?<value>.*)\z/
247
+
248
+ def each_cat_file_header(data)
249
+ while (match = CAT_FILE_HEADER_LINE.match(data.shift))
250
+ key = match[:key]
251
+ value_lines = [match[:value]]
252
+
253
+ while data.first.start_with?(' ')
254
+ value_lines << data.shift.lstrip
255
+ end
256
+
257
+ yield key, value_lines.join("\n")
258
+ end
259
+ end
260
+
253
261
  def tag_data(name)
254
262
  sha = sha.to_s
255
263
  tdata = command_lines('cat-file', 'tag', name)
256
- process_tag_data(tdata, name, 0)
264
+ process_tag_data(tdata, name)
257
265
  end
258
266
 
259
- def process_tag_data(data, name, indent=4)
260
- hsh = {
261
- 'name' => name,
262
- 'message' => ''
263
- }
264
-
265
- loop do
266
- key, *value = data.shift.split
267
-
268
- break if key.nil?
267
+ def process_tag_data(data, name)
268
+ hsh = { 'name' => name }
269
269
 
270
- hsh[key] = value.join(' ')
270
+ each_cat_file_header(data) do |key, value|
271
+ hsh[key] = value
271
272
  end
272
273
 
273
- hsh['message'] = data.collect {|line| line[indent..-1]}.join("\n") + "\n"
274
+ hsh['message'] = data.join("\n") + "\n"
274
275
 
275
276
  return hsh
276
277
  end
@@ -1029,8 +1030,9 @@ module Git
1029
1030
  # returns the current version of git, as an Array of Fixnums.
1030
1031
  def current_command_version
1031
1032
  output = command('version')
1032
- version = output[/\d+\.\d+(\.\d+)+/]
1033
- version.split('.').collect {|i| i.to_i}
1033
+ version = output[/\d+(\.\d+)+/]
1034
+ version_parts = version.split('.').collect { |i| i.to_i }
1035
+ version_parts.fill(0, version_parts.length...3)
1034
1036
  end
1035
1037
 
1036
1038
  def required_command_version
@@ -1043,10 +1045,11 @@ module Git
1043
1045
 
1044
1046
  def self.warn_if_old_command(lib)
1045
1047
  return true if @version_checked
1048
+ @version_checked = true
1046
1049
  unless lib.meets_required_version?
1047
1050
  $stderr.puts "[WARNING] The git gem requires git #{lib.required_command_version.join('.')} or later, but only found #{lib.current_command_version.join('.')}. You should probably upgrade."
1048
1051
  end
1049
- @version_checked = true
1052
+ true
1050
1053
  end
1051
1054
 
1052
1055
  private
@@ -1104,6 +1107,8 @@ module Git
1104
1107
  end
1105
1108
 
1106
1109
  def command(cmd, *opts, &block)
1110
+ Git::Lib.warn_if_old_command(self)
1111
+
1107
1112
  command_opts = { chomp: true, redirect: '' }
1108
1113
  if opts.last.is_a?(Hash)
1109
1114
  command_opts.merge!(opts.pop)
data/lib/git/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Git
2
2
  # The current gem version
3
3
  # @return [String] the current gem version.
4
- VERSION='1.13.0'
4
+ VERSION='1.13.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Chacon and others
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-14 00:00:00.000000000 Z
11
+ date: 2023-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: create_github_release
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.2'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: minitar
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -217,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
231
  version: '0'
218
232
  requirements:
219
233
  - git 1.6.0.0, or greater
220
- rubygems_version: 3.3.26
234
+ rubygems_version: 3.4.1
221
235
  signing_key:
222
236
  specification_version: 4
223
237
  summary: An API to create, read, and manipulate Git repositories