git 2.0.1 → 2.1.1

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: 7c7aebf8b61eb75a0d3e587fae03711b1d9cec89c7fb69462bda24c069daeaa4
4
- data.tar.gz: f73bd8a6e030209305ffbcc1bae372cd6820745569142ddd7239b366ef78d322
3
+ metadata.gz: b171ab737c87e925d5752b52f2f05bdd2361592624d88b8db8db380dde051019
4
+ data.tar.gz: d7b3b7cdaba4996288c4c0e8fffe7819da6c0933ade68ca810d9fb3519d5cda0
5
5
  SHA512:
6
- metadata.gz: 32c0e605d3ee280c19cf863f5b9a5fc9437171b9facbbee074b2ddca096c4cae3f08ddf42cb6cad7a91512824f40cd51940e1846c1f1a3e5bb7f4e7ee52e154b
7
- data.tar.gz: 528bf8926dbf6b76681b8333ca3d797b1e28854921f6abcd5b2fd9a13c6861c25e6ad75462efb818c1c74de0980c96974a423ad2a19aaf87d5b27e3e2ffca8cf
6
+ metadata.gz: '08dd5a4ea7b07230642e2dd87fca85ea634890f4700b77a996b3ff4443fc62d3c11a230c082c4d5b2c45c6c7d6916d9b98ce7362676e72d1a4bdd6f0fe2043e6'
7
+ data.tar.gz: 568111f5579b6b1728974dbfa12dc4d742f3715e951645dbed9a54d91399492157b77659b2e956ee995c142c8dbb01f3ee07357fb4db2a9c2bd0e1870e83dc79
data/CHANGELOG.md CHANGED
@@ -5,6 +5,29 @@
5
5
 
6
6
  # Change Log
7
7
 
8
+ ## v2.1.1 (2024-06-01)
9
+
10
+ [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v2.1.0..v2.1.1)
11
+
12
+ Changes since v2.1.0:
13
+
14
+ * 6ce3d4d Handle ignored files with quoted (non-ASCII) filenames
15
+ * dd8e8d4 Supply all of the _specific_ color options too
16
+ * 749a72d Memoize all of the significant calls in Git::Status
17
+ * 2bacccc When core.ignoreCase, check for untracked files case-insensitively
18
+ * 7758ee4 When core.ignoreCase, check for deleted files case-insensitively
19
+ * 993eb78 When core.ignoreCase, check for added files case-insensitively
20
+ * d943bf4 When core.ignoreCase, check for changed files case-insensitively
21
+
22
+ ## v2.1.0 (2024-05-31)
23
+
24
+ [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v2.0.1..v2.1.0)
25
+
26
+ Changes since v2.0.1:
27
+
28
+ * 93c8210 Add Git::Log#max_count
29
+ * d84097b Update YARDoc for a few a few method
30
+
8
31
  ## v2.0.1 (2024-05-21)
9
32
 
10
33
  [Full Changelog](https://github.com/ruby-git/ruby-git/compare/v2.0.0..v2.0.1)
data/README.md CHANGED
@@ -101,16 +101,28 @@ directory, in the index and in the repository. Similar to running 'git status'
101
101
 
102
102
  **Git::Remote**- A reference to a remote repository that is tracked by this repository.
103
103
 
104
- **Git::Log** - An Enumerable object that references all the `Git::Object::Commit` objects that encompass your log query, which can be constructed through methods on the `Git::Log object`,
105
- like:
104
+ **Git::Log** - An Enumerable object that references all the `Git::Object::Commit`
105
+ objects that encompass your log query, which can be constructed through methods on
106
+ the `Git::Log object`, like:
106
107
 
107
- `@git.log(20).object("some_file").since("2 weeks ago").between('v2.6', 'v2.7').each { |commit| [block] }`
108
+ ```ruby
109
+ git.log
110
+ .max_count(:all)
111
+ .object('README.md')
112
+ .since('10 years ago')
113
+ .between('v1.0.7', 'HEAD')
114
+ .map { |commit| commit.sha }
115
+ ```
108
116
 
109
- Pass the `--all` option to `git log` as follows:
117
+ A maximum of 30 commits are returned if `max_count` is not called. To get all commits
118
+ that match the log query, call `max_count(:all)`.
110
119
 
111
- `@git.log.all.each { |commit| [block] }`
120
+ Note that `git.log.all` adds the `--all` option to the underlying `git log` command.
121
+ This asks for the logs of all refs (basically all commits reachable by HEAD,
122
+ branches, and tags). This does not control the maximum number of commits returned. To
123
+ control how many commits are returned, you should call `max_count`.
112
124
 
113
- **Git::Worktrees** - Enumerable object that holds `Git::Worktree objects`.
125
+ **Git::Worktrees** - Enumerable object that holds `Git::Worktree objects`.
114
126
 
115
127
  ## Errors Raised By This Gem
116
128
 
data/lib/git/base.rb CHANGED
@@ -2,12 +2,14 @@ require 'logger'
2
2
  require 'open3'
3
3
 
4
4
  module Git
5
- # Git::Base is the main public interface for interacting with Git commands.
5
+ # The main public interface for interacting with Git commands
6
6
  #
7
7
  # Instead of creating a Git::Base directly, obtain a Git::Base instance by
8
8
  # calling one of the follow {Git} class methods: {Git.open}, {Git.init},
9
9
  # {Git.clone}, or {Git.bare}.
10
10
  #
11
+ # @api public
12
+ #
11
13
  class Base
12
14
  # (see Git.bare)
13
15
  def self.bare(git_dir, options = {})
@@ -119,6 +121,62 @@ module Git
119
121
  @index = options[:index] ? Git::Index.new(options[:index], false) : nil
120
122
  end
121
123
 
124
+ # Update the index from the current worktree to prepare the for the next commit
125
+ #
126
+ # @example
127
+ # lib.add('path/to/file')
128
+ # lib.add(['path/to/file1','path/to/file2'])
129
+ # lib.add(all: true)
130
+ #
131
+ # @param [String, Array<String>] paths a file or files to be added to the repository (relative to the worktree root)
132
+ # @param [Hash] options
133
+ #
134
+ # @option options [Boolean] :all Add, modify, and remove index entries to match the worktree
135
+ # @option options [Boolean] :force Allow adding otherwise ignored files
136
+ #
137
+ def add(paths = '.', **options)
138
+ self.lib.add(paths, options)
139
+ end
140
+
141
+ # adds a new remote to this repository
142
+ # url can be a git url or a Git::Base object if it's a local reference
143
+ #
144
+ # @git.add_remote('scotts_git', 'git://repo.or.cz/rubygit.git')
145
+ # @git.fetch('scotts_git')
146
+ # @git.merge('scotts_git/master')
147
+ #
148
+ # Options:
149
+ # :fetch => true
150
+ # :track => <branch_name>
151
+ def add_remote(name, url, opts = {})
152
+ url = url.repo.path if url.is_a?(Git::Base)
153
+ self.lib.remote_add(name, url, opts)
154
+ Git::Remote.new(self, name)
155
+ end
156
+
157
+ # Create a new git tag
158
+ #
159
+ # @example
160
+ # repo.add_tag('tag_name', object_reference)
161
+ # repo.add_tag('tag_name', object_reference, {:options => 'here'})
162
+ # repo.add_tag('tag_name', {:options => 'here'})
163
+ #
164
+ # @param [String] name The name of the tag to add
165
+ # @param [Hash] options Opstions to pass to `git tag`.
166
+ # See [git-tag](https://git-scm.com/docs/git-tag) for more details.
167
+ # @option options [boolean] :annotate Make an unsigned, annotated tag object
168
+ # @option options [boolean] :a An alias for the `:annotate` option
169
+ # @option options [boolean] :d Delete existing tag with the given names.
170
+ # @option options [boolean] :f Replace an existing tag with the given name (instead of failing)
171
+ # @option options [String] :message Use the given tag message
172
+ # @option options [String] :m An alias for the `:message` option
173
+ # @option options [boolean] :s Make a GPG-signed tag.
174
+ #
175
+ def add_tag(name, *options)
176
+ self.lib.tag(name, *options)
177
+ self.tag(name)
178
+ end
179
+
122
180
  # changes current working directory for a block
123
181
  # to the git working directory
124
182
  #
@@ -251,27 +309,11 @@ module Git
251
309
  self.object('HEAD').grep(string, path_limiter, opts)
252
310
  end
253
311
 
254
- # updates the repository index using the working directory content
255
- #
256
- # @example
257
- # git.add
258
- # git.add('path/to/file')
259
- # git.add(['path/to/file1','path/to/file2'])
260
- # git.add(:all => true)
261
- #
262
- # options:
263
- # :all => true
264
- #
265
- # @param [String,Array] paths files paths to be added (optional, default='.')
266
- # @param [Hash] options
267
- # @option options [boolean] :all
268
- # Update the index not only where the working tree has a file matching
269
- # <pathspec> but also where the index already has an entry.
270
- # See [the --all option to git-add](https://git-scm.com/docs/git-add#Documentation/git-add.txt--A)
271
- # for more details.
312
+ # List the files in the worktree that are ignored by git
313
+ # @return [Array<String>] the list of ignored files relative to teh root of the worktree
272
314
  #
273
- def add(paths = '.', **options)
274
- self.lib.add(paths, options)
315
+ def ignored_files
316
+ self.lib.ignored_files
275
317
  end
276
318
 
277
319
  # removes file(s) from the git repository
@@ -434,22 +476,6 @@ module Git
434
476
  self.lib.remotes.map { |r| Git::Remote.new(self, r) }
435
477
  end
436
478
 
437
- # adds a new remote to this repository
438
- # url can be a git url or a Git::Base object if it's a local reference
439
- #
440
- # @git.add_remote('scotts_git', 'git://repo.or.cz/rubygit.git')
441
- # @git.fetch('scotts_git')
442
- # @git.merge('scotts_git/master')
443
- #
444
- # Options:
445
- # :fetch => true
446
- # :track => <branch_name>
447
- def add_remote(name, url, opts = {})
448
- url = url.repo.path if url.is_a?(Git::Base)
449
- self.lib.remote_add(name, url, opts)
450
- Git::Remote.new(self, name)
451
- end
452
-
453
479
  # sets the url for a remote
454
480
  # url can be a git url or a Git::Base object if it's a local reference
455
481
  #
@@ -473,7 +499,7 @@ module Git
473
499
  self.lib.tags.map { |r| tag(r) }
474
500
  end
475
501
 
476
- # Creates a new git tag (Git::Tag)
502
+ # Create a new git tag
477
503
  #
478
504
  # @example
479
505
  # repo.add_tag('tag_name', object_reference)
@@ -3,7 +3,7 @@
3
3
  module Git
4
4
  # Represents an escaped Git path string
5
5
  #
6
- # Git commands that output paths (e.g. ls-files, diff), will escape usual
6
+ # Git commands that output paths (e.g. ls-files, diff), will escape unusual
7
7
  # characters in the path with backslashes in the same way C escapes control
8
8
  # characters (e.g. \t for TAB, \n for LF, \\ for backslash) or bytes with values
9
9
  # larger than 0x80 (e.g. octal \302\265 for "micro" in UTF-8).
data/lib/git/lib.rb CHANGED
@@ -38,14 +38,23 @@ module Git
38
38
 
39
39
  # Create a new Git::Lib object
40
40
  #
41
- # @param [Git::Base, Hash] base An object that passes in values for
42
- # @git_work_dir, @git_dir, and @git_index_file
41
+ # @overload initialize(base, logger)
43
42
  #
44
- # @param [Logger] logger
43
+ # @param base [Hash] the hash containing paths to the Git working copy,
44
+ # the Git repository directory, and the Git index file.
45
45
  #
46
- # @option base [Pathname] :working_directory
47
- # @option base [Pathname] :repository
48
- # @option base [Pathname] :index
46
+ # @option base [Pathname] :working_directory
47
+ # @option base [Pathname] :repository
48
+ # @option base [Pathname] :index
49
+ #
50
+ # @param [Logger] logger
51
+ #
52
+ # @overload initialize(base, logger)
53
+ #
54
+ # @param base [#dir, #repo, #index] an object with methods to get the Git worktree (#dir),
55
+ # the Git repository directory (#repo), and the Git index file (#index).
56
+ #
57
+ # @param [Logger] logger
49
58
  #
50
59
  def initialize(base = nil, logger = nil)
51
60
  @git_dir = nil
@@ -565,18 +574,52 @@ module Git
565
574
  diff_as_hash('diff-index', treeish)
566
575
  end
567
576
 
577
+ # List all files that are in the index
578
+ #
579
+ # @param location [String] the location to list the files from
580
+ #
581
+ # @return [Hash<String, Hash>] a hash of files in the index
582
+ # * key: file [String] the file path
583
+ # * value: file_info [Hash] the file information containing the following keys:
584
+ # * :path [String] the file path
585
+ # * :mode_index [String] the file mode
586
+ # * :sha_index [String] the file sha
587
+ # * :stage [String] the file stage
588
+ #
568
589
  def ls_files(location=nil)
569
590
  location ||= '.'
570
- hsh = {}
571
- command_lines('ls-files', '--stage', location).each do |line|
572
- (info, file) = line.split("\t")
573
- (mode, sha, stage) = info.split
574
- if file.start_with?('"') && file.end_with?('"')
575
- file = Git::EscapedPath.new(file[1..-2]).unescape
591
+ {}.tap do |files|
592
+ command_lines('ls-files', '--stage', location).each do |line|
593
+ (info, file) = line.split("\t")
594
+ (mode, sha, stage) = info.split
595
+ files[unescape_quoted_path(file)] = {
596
+ :path => file, :mode_index => mode, :sha_index => sha, :stage => stage
597
+ }
576
598
  end
577
- hsh[file] = {:path => file, :mode_index => mode, :sha_index => sha, :stage => stage}
578
599
  end
579
- hsh
600
+ end
601
+
602
+ # Unescape a path if it is quoted
603
+ #
604
+ # Git commands that output paths (e.g. ls-files, diff), will escape unusual
605
+ # characters.
606
+ #
607
+ # @example
608
+ # lib.unescape_if_quoted('"quoted_file_\\342\\230\\240"') # => 'quoted_file_☠'
609
+ # lib.unescape_if_quoted('unquoted_file') # => 'unquoted_file'
610
+ #
611
+ # @param path [String] the path to unescape if quoted
612
+ #
613
+ # @return [String] the unescaped path if quoted otherwise the original path
614
+ #
615
+ # @api private
616
+ #
617
+ def unescape_quoted_path(path)
618
+ if path.start_with?('"') && path.end_with?('"')
619
+ Git::EscapedPath.new(path[1..-2]).unescape
620
+ else
621
+ path
622
+ end
580
623
  end
581
624
 
582
625
  def ls_remote(location=nil, opts={})
@@ -597,7 +640,7 @@ module Git
597
640
  end
598
641
 
599
642
  def ignored_files
600
- command_lines('ls-files', '--others', '-i', '--exclude-standard')
643
+ command_lines('ls-files', '--others', '-i', '--exclude-standard').map { |f| unescape_quoted_path(f) }
601
644
  end
602
645
 
603
646
  def untracked_files
@@ -670,18 +713,20 @@ module Git
670
713
  command('config', '--global', name, value)
671
714
  end
672
715
 
673
- # updates the repository index using the working directory content
674
- #
675
- # lib.add('path/to/file')
676
- # lib.add(['path/to/file1','path/to/file2'])
677
- # lib.add(:all => true)
716
+
717
+ # Update the index from the current worktree to prepare the for the next commit
678
718
  #
679
- # options:
680
- # :all => true
681
- # :force => true
719
+ # @example
720
+ # lib.add('path/to/file')
721
+ # lib.add(['path/to/file1','path/to/file2'])
722
+ # lib.add(:all => true)
682
723
  #
683
- # @param [String,Array] paths files paths to be added to the repository
724
+ # @param [String, Array<String>] paths files to be added to the repository (relative to the worktree root)
684
725
  # @param [Hash] options
726
+ #
727
+ # @option options [Boolean] :all Add, modify, and remove index entries to match the worktree
728
+ # @option options [Boolean] :force Allow adding otherwise ignored files
729
+ #
685
730
  def add(paths='.',options={})
686
731
  arr_opts = []
687
732
 
@@ -1212,6 +1257,14 @@ module Git
1212
1257
  global_opts << "--work-tree=#{@git_work_dir}" if !@git_work_dir.nil?
1213
1258
  global_opts << '-c' << 'core.quotePath=true'
1214
1259
  global_opts << '-c' << 'color.ui=false'
1260
+ global_opts << '-c' << 'color.advice=false'
1261
+ global_opts << '-c' << 'color.diff=false'
1262
+ global_opts << '-c' << 'color.grep=false'
1263
+ global_opts << '-c' << 'color.push=false'
1264
+ global_opts << '-c' << 'color.remote=false'
1265
+ global_opts << '-c' << 'color.showBranch=false'
1266
+ global_opts << '-c' << 'color.status=false'
1267
+ global_opts << '-c' << 'color.transport=false'
1215
1268
  end
1216
1269
  end
1217
1270
 
data/lib/git/log.rb CHANGED
@@ -1,15 +1,76 @@
1
1
  module Git
2
2
 
3
- # object that holds the last X commits on given branch
3
+ # Return the last n commits that match the specified criteria
4
+ #
5
+ # @example The last (default number) of commits
6
+ # git = Git.open('.')
7
+ # Git::Log.new(git) #=> Enumerable of the last 30 commits
8
+ #
9
+ # @example The last n commits
10
+ # Git::Log.new(git).max_commits(50) #=> Enumerable of last 50 commits
11
+ #
12
+ # @example All commits returned by `git log`
13
+ # Git::Log.new(git).max_count(:all) #=> Enumerable of all commits
14
+ #
15
+ # @example All commits that match complex criteria
16
+ # Git::Log.new(git)
17
+ # .max_count(:all)
18
+ # .object('README.md')
19
+ # .since('10 years ago')
20
+ # .between('v1.0.7', 'HEAD')
21
+ #
22
+ # @api public
23
+ #
4
24
  class Log
5
25
  include Enumerable
6
26
 
7
- def initialize(base, count = 30)
27
+ # Create a new Git::Log object
28
+ #
29
+ # @example
30
+ # git = Git.open('.')
31
+ # Git::Log.new(git)
32
+ #
33
+ # @param base [Git::Base] the git repository object
34
+ # @param max_count [Integer, Symbol, nil] the number of commits to return, or
35
+ # `:all` or `nil` to return all
36
+ #
37
+ # Passing max_count to {#initialize} is equivalent to calling {#max_count} on the object.
38
+ #
39
+ def initialize(base, max_count = 30)
8
40
  dirty_log
9
41
  @base = base
10
- @count = count
42
+ max_count(max_count)
43
+ end
44
+
45
+ # The maximum number of commits to return
46
+ #
47
+ # @example All commits returned by `git log`
48
+ # git = Git.open('.')
49
+ # Git::Log.new(git).max_count(:all)
50
+ #
51
+ # @param num_or_all [Integer, Symbol, nil] the number of commits to return, or
52
+ # `:all` or `nil` to return all
53
+ #
54
+ # @return [self]
55
+ #
56
+ def max_count(num_or_all)
57
+ dirty_log
58
+ @max_count = (num_or_all == :all) ? nil : num_or_all
59
+ self
11
60
  end
12
61
 
62
+ # Adds the --all flag to the git log command
63
+ #
64
+ # This asks for the logs of all refs (basically all commits reachable by HEAD,
65
+ # branches, and tags). This does not control the maximum number of commits
66
+ # returned. To control how many commits are returned, call {#max_count}.
67
+ #
68
+ # @example Return the last 50 commits reachable by all refs
69
+ # git = Git.open('.')
70
+ # Git::Log.new(git).max_count(50).all
71
+ #
72
+ # @return [self]
73
+ #
13
74
  def all
14
75
  dirty_log
15
76
  @all = true
@@ -119,7 +180,7 @@ module Git
119
180
  # actually run the 'git log' command
120
181
  def run_log
121
182
  log = @base.lib.full_log_commits(
122
- count: @count, all: @all, object: @object, path_limiter: @path, since: @since,
183
+ count: @max_count, all: @all, object: @object, path_limiter: @path, since: @since,
123
184
  author: @author, grep: @grep, skip: @skip, until: @until, between: @between,
124
185
  cherry: @cherry
125
186
  )
data/lib/git/status.rb CHANGED
@@ -22,7 +22,7 @@ module Git
22
22
  #
23
23
  # @return [Enumerable]
24
24
  def changed
25
- @files.select { |_k, f| f.type == 'M' }
25
+ @_changed ||= @files.select { |_k, f| f.type == 'M' }
26
26
  end
27
27
 
28
28
  #
@@ -34,7 +34,7 @@ module Git
34
34
  # changed?('lib/git.rb')
35
35
  # @return [Boolean]
36
36
  def changed?(file)
37
- changed.member?(file)
37
+ case_aware_include?(:changed, :lc_changed, file)
38
38
  end
39
39
 
40
40
  # Returns an Enumerable containing files that have been added.
@@ -42,7 +42,7 @@ module Git
42
42
  #
43
43
  # @return [Enumerable]
44
44
  def added
45
- @files.select { |_k, f| f.type == 'A' }
45
+ @_added ||= @files.select { |_k, f| f.type == 'A' }
46
46
  end
47
47
 
48
48
  # Determines whether the given file has been added to the repository
@@ -54,7 +54,7 @@ module Git
54
54
  # added?('lib/git.rb')
55
55
  # @return [Boolean]
56
56
  def added?(file)
57
- added.member?(file)
57
+ case_aware_include?(:added, :lc_added, file)
58
58
  end
59
59
 
60
60
  #
@@ -63,7 +63,7 @@ module Git
63
63
  #
64
64
  # @return [Enumerable]
65
65
  def deleted
66
- @files.select { |_k, f| f.type == 'D' }
66
+ @_deleted ||= @files.select { |_k, f| f.type == 'D' }
67
67
  end
68
68
 
69
69
  #
@@ -75,7 +75,7 @@ module Git
75
75
  # deleted?('lib/git.rb')
76
76
  # @return [Boolean]
77
77
  def deleted?(file)
78
- deleted.member?(file)
78
+ case_aware_include?(:deleted, :lc_deleted, file)
79
79
  end
80
80
 
81
81
  #
@@ -84,7 +84,7 @@ module Git
84
84
  #
85
85
  # @return [Enumerable]
86
86
  def untracked
87
- @files.select { |_k, f| f.untracked }
87
+ @_untracked ||= @files.select { |_k, f| f.untracked }
88
88
  end
89
89
 
90
90
  #
@@ -96,7 +96,7 @@ module Git
96
96
  # untracked?('lib/git.rb')
97
97
  # @return [Boolean]
98
98
  def untracked?(file)
99
- untracked.member?(file)
99
+ case_aware_include?(:untracked, :lc_untracked, file)
100
100
  end
101
101
 
102
102
  def pretty
@@ -264,5 +264,43 @@ module Git
264
264
  end
265
265
  end
266
266
  end
267
+
268
+ # It's worth noting that (like git itself) this gem will not behave well if
269
+ # ignoreCase is set inconsistently with the file-system itself. For details:
270
+ # https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreignoreCase
271
+ def ignore_case?
272
+ return @_ignore_case if defined?(@_ignore_case)
273
+ @_ignore_case = @base.config('core.ignoreCase') == 'true'
274
+ rescue Git::FailedError
275
+ @_ignore_case = false
276
+ end
277
+
278
+ def downcase_keys(hash)
279
+ hash.map { |k, v| [k.downcase, v] }.to_h
280
+ end
281
+
282
+ def lc_changed
283
+ @_lc_changed ||= changed.transform_keys(&:downcase)
284
+ end
285
+
286
+ def lc_added
287
+ @_lc_added ||= added.transform_keys(&:downcase)
288
+ end
289
+
290
+ def lc_deleted
291
+ @_lc_deleted ||= deleted.transform_keys(&:downcase)
292
+ end
293
+
294
+ def lc_untracked
295
+ @_lc_untracked ||= untracked.transform_keys(&:downcase)
296
+ end
297
+
298
+ def case_aware_include?(cased_hash, downcased_hash, file)
299
+ if ignore_case?
300
+ send(downcased_hash).include?(file.downcase)
301
+ else
302
+ send(cased_hash).include?(file)
303
+ end
304
+ end
267
305
  end
268
306
  end
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='2.0.1'
4
+ VERSION='2.1.1'
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: 2.0.1
4
+ version: 2.1.1
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: 2024-05-21 00:00:00.000000000 Z
11
+ date: 2024-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -243,8 +243,8 @@ licenses:
243
243
  metadata:
244
244
  homepage_uri: http://github.com/ruby-git/ruby-git
245
245
  source_code_uri: http://github.com/ruby-git/ruby-git
246
- changelog_uri: https://rubydoc.info/gems/git/2.0.1/file/CHANGELOG.md
247
- documentation_uri: https://rubydoc.info/gems/git/2.0.1
246
+ changelog_uri: https://rubydoc.info/gems/git/2.1.1/file/CHANGELOG.md
247
+ documentation_uri: https://rubydoc.info/gems/git/2.1.1
248
248
  post_install_message:
249
249
  rdoc_options: []
250
250
  require_paths: