git 1.19.1 → 2.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/continuous_integration.yml +22 -18
- data/CHANGELOG.md +19 -0
- data/README.md +147 -34
- data/RELEASING.md +49 -34
- data/git.gemspec +6 -8
- data/lib/git/command_line.rb +368 -0
- data/lib/git/command_line_error.rb +59 -0
- data/lib/git/config.rb +5 -1
- data/lib/git/error.rb +7 -0
- data/lib/git/failed_error.rb +4 -43
- data/lib/git/git_execute_error.rb +8 -1
- data/lib/git/lib.rb +112 -137
- data/lib/git/signaled_error.rb +3 -39
- data/lib/git/timeout_error.rb +60 -0
- data/lib/git/version.rb +1 -1
- data/lib/git.rb +4 -0
- metadata +23 -33
data/lib/git/lib.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'git/failed_error'
|
2
|
+
require 'git/command_line'
|
2
3
|
require 'logger'
|
4
|
+
require 'pp'
|
5
|
+
require 'process_executer'
|
6
|
+
require 'stringio'
|
3
7
|
require 'tempfile'
|
4
8
|
require 'zlib'
|
5
9
|
require 'open3'
|
6
10
|
|
7
11
|
module Git
|
8
12
|
class Lib
|
9
|
-
|
10
|
-
@@semaphore = Mutex.new
|
11
|
-
|
12
13
|
# The path to the Git working copy. The default is '"./.git"'.
|
13
14
|
#
|
14
15
|
# @return [Pathname] the path to the Git working copy.
|
@@ -114,7 +115,7 @@ module Git
|
|
114
115
|
arr_opts << repository_url
|
115
116
|
arr_opts << clone_dir
|
116
117
|
|
117
|
-
command('clone', *arr_opts)
|
118
|
+
command('clone', *arr_opts, timeout: opts[:timeout])
|
118
119
|
|
119
120
|
return_base_opts_from_clone(clone_dir, opts)
|
120
121
|
end
|
@@ -337,7 +338,19 @@ module Git
|
|
337
338
|
end
|
338
339
|
|
339
340
|
def object_contents(sha, &block)
|
340
|
-
|
341
|
+
if block_given?
|
342
|
+
Tempfile.create do |file|
|
343
|
+
# If a block is given, write the output from the process to a temporary
|
344
|
+
# file and then yield the file to the block
|
345
|
+
#
|
346
|
+
command('cat-file', "-p", sha, out: file, err: file)
|
347
|
+
file.rewind
|
348
|
+
yield file
|
349
|
+
end
|
350
|
+
else
|
351
|
+
# If a block is not given, return stdout
|
352
|
+
command('cat-file', '-p', sha)
|
353
|
+
end
|
341
354
|
end
|
342
355
|
|
343
356
|
def ls_tree(sha)
|
@@ -474,11 +487,15 @@ module Git
|
|
474
487
|
grep_opts.push('--', *opts[:path_limiter]) if opts[:path_limiter].is_a?(Array)
|
475
488
|
|
476
489
|
hsh = {}
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
490
|
+
begin
|
491
|
+
command_lines('grep', *grep_opts).each do |line|
|
492
|
+
if m = /(.*?)\:(\d+)\:(.*)/.match(line)
|
493
|
+
hsh[m[1]] ||= []
|
494
|
+
hsh[m[1]] << [m[2].to_i, m[3]]
|
495
|
+
end
|
481
496
|
end
|
497
|
+
rescue Git::FailedError => e
|
498
|
+
raise unless e.result.status.exitstatus == 1 && e.result.stderr == ''
|
482
499
|
end
|
483
500
|
hsh
|
484
501
|
end
|
@@ -865,16 +882,17 @@ module Git
|
|
865
882
|
|
866
883
|
def conflicts # :yields: file, your, their
|
867
884
|
self.unmerged.each do |f|
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
885
|
+
Tempfile.create("YOUR-#{File.basename(f)}") do |your|
|
886
|
+
command('show', ":2:#{f}", out: your)
|
887
|
+
your.close
|
888
|
+
|
889
|
+
Tempfile.create("THEIR-#{File.basename(f)}") do |their|
|
890
|
+
command('show', ":3:#{f}", out: their)
|
891
|
+
their.close
|
892
|
+
|
893
|
+
yield(f, your.path, their.path)
|
894
|
+
end
|
895
|
+
end
|
878
896
|
end
|
879
897
|
end
|
880
898
|
|
@@ -948,7 +966,7 @@ module Git
|
|
948
966
|
arr_opts << remote if remote
|
949
967
|
arr_opts << opts[:ref] if opts[:ref]
|
950
968
|
|
951
|
-
command('fetch', *arr_opts)
|
969
|
+
command('fetch', *arr_opts, merge: true)
|
952
970
|
end
|
953
971
|
|
954
972
|
def push(remote = nil, branch = nil, opts = nil)
|
@@ -1001,7 +1019,13 @@ module Git
|
|
1001
1019
|
head = File.join(@git_dir, 'refs', 'tags', tag_name)
|
1002
1020
|
return File.read(head).chomp if File.exist?(head)
|
1003
1021
|
|
1004
|
-
|
1022
|
+
begin
|
1023
|
+
command('show-ref', '--tags', '-s', tag_name)
|
1024
|
+
rescue Git::FailedError => e
|
1025
|
+
raise unless e.result.status.exitstatus == 1 && e.result.stderr == ''
|
1026
|
+
|
1027
|
+
''
|
1028
|
+
end
|
1005
1029
|
end
|
1006
1030
|
|
1007
1031
|
def repack
|
@@ -1026,15 +1050,12 @@ module Git
|
|
1026
1050
|
|
1027
1051
|
def commit_tree(tree, opts = {})
|
1028
1052
|
opts[:message] ||= "commit tree #{tree}"
|
1029
|
-
t = Tempfile.new('commit-message')
|
1030
|
-
t.write(opts[:message])
|
1031
|
-
t.close
|
1032
|
-
|
1033
1053
|
arr_opts = []
|
1034
1054
|
arr_opts << tree
|
1035
1055
|
arr_opts << '-p' << opts[:parent] if opts[:parent]
|
1036
|
-
|
1037
|
-
|
1056
|
+
Array(opts[:parents]).each { |p| arr_opts << '-p' << p } if opts[:parents]
|
1057
|
+
arr_opts << '-m' << opts[:message]
|
1058
|
+
command('commit-tree', *arr_opts)
|
1038
1059
|
end
|
1039
1060
|
|
1040
1061
|
def update_ref(ref, commit)
|
@@ -1080,7 +1101,11 @@ module Git
|
|
1080
1101
|
arr_opts << "--remote=#{opts[:remote]}" if opts[:remote]
|
1081
1102
|
arr_opts << sha
|
1082
1103
|
arr_opts << '--' << opts[:path] if opts[:path]
|
1083
|
-
|
1104
|
+
|
1105
|
+
f = File.open(file, 'wb')
|
1106
|
+
command('archive', *arr_opts, out: f)
|
1107
|
+
f.close
|
1108
|
+
|
1084
1109
|
if opts[:add_gzip]
|
1085
1110
|
file_content = File.read(file)
|
1086
1111
|
Zlib::GzipWriter.open(file) do |gz|
|
@@ -1115,7 +1140,7 @@ module Git
|
|
1115
1140
|
end
|
1116
1141
|
|
1117
1142
|
def required_command_version
|
1118
|
-
[
|
1143
|
+
[2, 28]
|
1119
1144
|
end
|
1120
1145
|
|
1121
1146
|
def meets_required_version?
|
@@ -1133,11 +1158,6 @@ module Git
|
|
1133
1158
|
|
1134
1159
|
private
|
1135
1160
|
|
1136
|
-
# Systen ENV variables involved in the git commands.
|
1137
|
-
#
|
1138
|
-
# @return [<String>] the names of the EVN variables involved in the git commands
|
1139
|
-
ENV_VARIABLE_NAMES = ['GIT_DIR', 'GIT_WORK_TREE', 'GIT_INDEX_FILE', 'GIT_SSH']
|
1140
|
-
|
1141
1161
|
def command_lines(cmd, *opts, chdir: nil)
|
1142
1162
|
cmd_op = command(cmd, *opts, chdir: chdir)
|
1143
1163
|
if cmd_op.encoding.name != "UTF-8"
|
@@ -1148,84 +1168,72 @@ module Git
|
|
1148
1168
|
op.split("\n")
|
1149
1169
|
end
|
1150
1170
|
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1171
|
+
def env_overrides
|
1172
|
+
{
|
1173
|
+
'GIT_DIR' => @git_dir,
|
1174
|
+
'GIT_WORK_TREE' => @git_work_dir,
|
1175
|
+
'GIT_INDEX_FILE' => @git_index_file,
|
1176
|
+
'GIT_SSH' => Git::Base.config.git_ssh
|
1177
|
+
}
|
1157
1178
|
end
|
1158
1179
|
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1180
|
+
def global_opts
|
1181
|
+
Array.new.tap do |global_opts|
|
1182
|
+
global_opts << "--git-dir=#{@git_dir}" if !@git_dir.nil?
|
1183
|
+
global_opts << "--work-tree=#{@git_work_dir}" if !@git_work_dir.nil?
|
1184
|
+
global_opts << '-c' << 'core.quotePath=true'
|
1185
|
+
global_opts << '-c' << 'color.ui=false'
|
1163
1186
|
end
|
1164
1187
|
end
|
1165
1188
|
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
ENV['GIT_WORK_TREE'] = @git_work_dir
|
1170
|
-
ENV['GIT_INDEX_FILE'] = @git_index_file
|
1171
|
-
ENV['GIT_SSH'] = Git::Base.config.git_ssh
|
1189
|
+
def command_line
|
1190
|
+
@command_line ||=
|
1191
|
+
Git::CommandLine.new(env_overrides, Git::Base.config.binary_path, global_opts, @logger)
|
1172
1192
|
end
|
1173
1193
|
|
1174
|
-
# Runs a
|
1175
|
-
# It restores the ENV after execution.
|
1194
|
+
# Runs a git command and returns the output
|
1176
1195
|
#
|
1177
|
-
# @param [
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
@logger.info(git_cmd)
|
1219
|
-
@logger.debug(output)
|
1220
|
-
|
1221
|
-
if status.exitstatus > 1 || (status.exitstatus == 1 && output != '')
|
1222
|
-
result = Git::CommandLineResult.new(git_cmd, status, output, '')
|
1223
|
-
raise Git::FailedError.new(result)
|
1224
|
-
end
|
1225
|
-
|
1226
|
-
output.chomp! if output && chomp && !block_given?
|
1227
|
-
|
1228
|
-
output
|
1196
|
+
# @param args [Array] the git command to run and its arguments
|
1197
|
+
#
|
1198
|
+
# This should exclude the 'git' command itself and global options.
|
1199
|
+
#
|
1200
|
+
# For example, to run `git log --pretty=oneline`, you would pass `['log',
|
1201
|
+
# '--pretty=oneline']`
|
1202
|
+
#
|
1203
|
+
# @param out [String, nil] the path to a file or an IO to write the command's
|
1204
|
+
# stdout to
|
1205
|
+
#
|
1206
|
+
# @param err [String, nil] the path to a file or an IO to write the command's
|
1207
|
+
# stdout to
|
1208
|
+
#
|
1209
|
+
# @param normalize [Boolean] true to normalize the output encoding
|
1210
|
+
#
|
1211
|
+
# @param chomp [Boolean] true to remove trailing newlines from the output
|
1212
|
+
#
|
1213
|
+
# @param merge [Boolean] true to merge stdout and stderr
|
1214
|
+
#
|
1215
|
+
# @param chdir [String, nil] the directory to run the command in
|
1216
|
+
#
|
1217
|
+
# @param timeout [Numeric, nil] the maximum time to wait for the command to
|
1218
|
+
# complete
|
1219
|
+
#
|
1220
|
+
# @see Git::CommandLine#run
|
1221
|
+
#
|
1222
|
+
# @return [String] the command's stdout (or merged stdout and stderr if `merge`
|
1223
|
+
# is true)
|
1224
|
+
#
|
1225
|
+
# @raise [Git::GitExecuteError] if the command fails
|
1226
|
+
#
|
1227
|
+
# The exception's `result` attribute is a {Git::CommandLineResult} which will
|
1228
|
+
# contain the result of the command including the exit status, stdout, and
|
1229
|
+
# stderr.
|
1230
|
+
#
|
1231
|
+
# @api private
|
1232
|
+
#
|
1233
|
+
def command(*args, out: nil, err: nil, normalize: true, chomp: true, merge: false, chdir: nil, timeout: nil)
|
1234
|
+
timeout = timeout || Git.config.timeout
|
1235
|
+
result = command_line.run(*args, out: out, err: err, normalize: normalize, chomp: chomp, merge: merge, chdir: chdir, timeout: timeout)
|
1236
|
+
result.stdout
|
1229
1237
|
end
|
1230
1238
|
|
1231
1239
|
# Takes the diff command line output (as Array) and parse it into a Hash
|
@@ -1291,38 +1299,5 @@ module Git
|
|
1291
1299
|
end
|
1292
1300
|
arr_opts
|
1293
1301
|
end
|
1294
|
-
|
1295
|
-
def run_command(git_cmd, chdir=nil, &block)
|
1296
|
-
block ||= Proc.new do |io|
|
1297
|
-
io.readlines.map { |l| Git::EncodingUtils.normalize_encoding(l) }.join
|
1298
|
-
end
|
1299
|
-
|
1300
|
-
opts = {}
|
1301
|
-
opts[:chdir] = File.expand_path(chdir) if chdir
|
1302
|
-
|
1303
|
-
Open3.popen2(git_cmd, opts) do |stdin, stdout, wait_thr|
|
1304
|
-
[block.call(stdout), wait_thr.value]
|
1305
|
-
end
|
1306
|
-
end
|
1307
|
-
|
1308
|
-
def escape(s)
|
1309
|
-
windows_platform? ? escape_for_windows(s) : escape_for_sh(s)
|
1310
|
-
end
|
1311
|
-
|
1312
|
-
def escape_for_sh(s)
|
1313
|
-
"'#{s && s.to_s.gsub('\'','\'"\'"\'')}'"
|
1314
|
-
end
|
1315
|
-
|
1316
|
-
def escape_for_windows(s)
|
1317
|
-
# Escape existing double quotes in s and then wrap the result with double quotes
|
1318
|
-
escaped_string = s.to_s.gsub('"','\\"')
|
1319
|
-
%Q{"#{escaped_string}"}
|
1320
|
-
end
|
1321
|
-
|
1322
|
-
def windows_platform?
|
1323
|
-
# Check if on Windows via RUBY_PLATFORM (CRuby) and RUBY_DESCRIPTION (JRuby)
|
1324
|
-
win_platform_regex = /mingw|mswin/
|
1325
|
-
RUBY_PLATFORM =~ win_platform_regex || RUBY_DESCRIPTION =~ win_platform_regex
|
1326
|
-
end
|
1327
1302
|
end
|
1328
1303
|
end
|
data/lib/git/signaled_error.rb
CHANGED
@@ -1,50 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'command_line_error'
|
4
4
|
|
5
5
|
module Git
|
6
6
|
# This error is raised when a git command exits because of an uncaught signal
|
7
7
|
#
|
8
8
|
# The git command executed, status, stdout, and stderr are available from this
|
9
|
-
# object.
|
10
|
-
# the stderr of the process.
|
9
|
+
# object.
|
11
10
|
#
|
12
11
|
# @api public
|
13
12
|
#
|
14
|
-
class SignaledError < Git::
|
15
|
-
# Create a SignaledError object
|
16
|
-
#
|
17
|
-
# @example
|
18
|
-
# `kill -9 $$` # set $? appropriately for this example
|
19
|
-
# result = Git::CommandLineResult.new(%w[git status], $?, '', "killed")
|
20
|
-
# error = Git::SignaledError.new(result)
|
21
|
-
# error.message #=>
|
22
|
-
# "[\"git\", \"status\"]\nstatus: pid 88811 SIGKILL (signal 9)\nstderr: \"killed\""
|
23
|
-
#
|
24
|
-
# @param result [Git::CommandLineResult] the result of the git command including the git command, status, stdout, and stderr
|
25
|
-
#
|
26
|
-
def initialize(result)
|
27
|
-
super("#{result.git_cmd}\nstatus: #{result.status}\nstderr: #{result.stderr.inspect}")
|
28
|
-
@result = result
|
29
|
-
end
|
30
|
-
|
31
|
-
# @attribute [r] result
|
32
|
-
#
|
33
|
-
# The result of the git command including the git command, status, and output
|
34
|
-
#
|
35
|
-
# @example
|
36
|
-
# `kill -9 $$` # set $? appropriately for this example
|
37
|
-
# result = Git::CommandLineResult.new(%w[git status], $?, '', "killed")
|
38
|
-
# error = Git::SignaledError.new(result)
|
39
|
-
# error.result #=>
|
40
|
-
# #<Git::CommandLineResult:0x000000010470f6e8
|
41
|
-
# @git_cmd=["git", "status"],
|
42
|
-
# @status=#<Process::Status: pid 88811 SIGKILL (signal 9)>,
|
43
|
-
# @stderr="killed",
|
44
|
-
# @stdout="">
|
45
|
-
#
|
46
|
-
# @return [Git::CommandLineResult]
|
47
|
-
#
|
48
|
-
attr_reader :result
|
49
|
-
end
|
13
|
+
class SignaledError < Git::CommandLineError; end
|
50
14
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'signaled_error'
|
4
|
+
|
5
|
+
module Git
|
6
|
+
# This error is raised when a git command takes longer than the configured timeout
|
7
|
+
#
|
8
|
+
# The git command executed, status, stdout, and stderr, and the timeout duration
|
9
|
+
# are available from this object.
|
10
|
+
#
|
11
|
+
# result.status.timeout? will be `true`
|
12
|
+
#
|
13
|
+
# @api public
|
14
|
+
#
|
15
|
+
class TimeoutError < Git::SignaledError
|
16
|
+
# Create a TimeoutError object
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# command = %w[sleep 10]
|
20
|
+
# timeout_duration = 1
|
21
|
+
# status = ProcessExecuter.spawn(*command, timeout: timeout_duration)
|
22
|
+
# result = Git::CommandLineResult.new(command, status, 'stdout', 'err output')
|
23
|
+
# error = Git::TimeoutError.new(result, timeout_duration)
|
24
|
+
# error.to_s #=> '["sleep", "10"], status: pid 70144 SIGKILL (signal 9), stderr: "err output", timed out after 1s'
|
25
|
+
#
|
26
|
+
# @param result [Git::CommandLineResult] the result of the git command including
|
27
|
+
# the git command, status, stdout, and stderr
|
28
|
+
#
|
29
|
+
# @param timeout_duration [Numeric] the amount of time the subprocess was allowed
|
30
|
+
# to run before being killed
|
31
|
+
#
|
32
|
+
def initialize(result, timeout_duration)
|
33
|
+
@timeout_duration = timeout_duration
|
34
|
+
super(result)
|
35
|
+
end
|
36
|
+
|
37
|
+
# The human readable representation of this error
|
38
|
+
#
|
39
|
+
# @example
|
40
|
+
# error.to_s #=> '["sleep", "10"], status: pid 88811 SIGKILL (signal 9), stderr: "err output", timed out after 1s'
|
41
|
+
#
|
42
|
+
# @return [String]
|
43
|
+
#
|
44
|
+
def to_s = <<~MESSAGE.chomp
|
45
|
+
#{super}, timed out after #{timeout_duration}s
|
46
|
+
MESSAGE
|
47
|
+
|
48
|
+
# The amount of time the subprocess was allowed to run before being killed
|
49
|
+
#
|
50
|
+
# @example
|
51
|
+
# `kill -9 $$` # set $? appropriately for this example
|
52
|
+
# result = Git::CommandLineResult.new(%w[git status], $?, '', "killed")
|
53
|
+
# error = Git::TimeoutError.new(result, 10)
|
54
|
+
# error.timeout_duration #=> 10
|
55
|
+
#
|
56
|
+
# @return [Numeric]
|
57
|
+
#
|
58
|
+
attr_reader :timeout_duration
|
59
|
+
end
|
60
|
+
end
|
data/lib/git/version.rb
CHANGED
data/lib/git.rb
CHANGED
@@ -7,10 +7,13 @@ require 'git/author'
|
|
7
7
|
require 'git/base'
|
8
8
|
require 'git/branch'
|
9
9
|
require 'git/branches'
|
10
|
+
require 'git/command_line_error'
|
10
11
|
require 'git/command_line_result'
|
12
|
+
require 'git/command_line'
|
11
13
|
require 'git/config'
|
12
14
|
require 'git/diff'
|
13
15
|
require 'git/encoding_utils'
|
16
|
+
require 'git/error'
|
14
17
|
require 'git/escaped_path'
|
15
18
|
require 'git/failed_error'
|
16
19
|
require 'git/git_execute_error'
|
@@ -25,6 +28,7 @@ require 'git/signaled_error'
|
|
25
28
|
require 'git/status'
|
26
29
|
require 'git/stash'
|
27
30
|
require 'git/stashes'
|
31
|
+
require 'git/timeout_error'
|
28
32
|
require 'git/url'
|
29
33
|
require 'git/version'
|
30
34
|
require 'git/working_directory'
|
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:
|
4
|
+
version: 2.0.0.pre2
|
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-
|
11
|
+
date: 2024-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -25,47 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: process_executer
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.10'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.10'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: create_github_release
|
42
|
+
name: rchardet
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
47
|
+
version: '1.8'
|
48
|
+
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '1.8'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: minitar
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,42 +86,42 @@ dependencies:
|
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '13.
|
89
|
+
version: '13.1'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '13.
|
96
|
+
version: '13.1'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: test-unit
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '3.
|
103
|
+
version: '3.6'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: '3.
|
110
|
+
version: '3.6'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: redcarpet
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '3.
|
117
|
+
version: '3.6'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '3.
|
124
|
+
version: '3.6'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: yard
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -203,10 +189,13 @@ files:
|
|
203
189
|
- lib/git/base/factory.rb
|
204
190
|
- lib/git/branch.rb
|
205
191
|
- lib/git/branches.rb
|
192
|
+
- lib/git/command_line.rb
|
193
|
+
- lib/git/command_line_error.rb
|
206
194
|
- lib/git/command_line_result.rb
|
207
195
|
- lib/git/config.rb
|
208
196
|
- lib/git/diff.rb
|
209
197
|
- lib/git/encoding_utils.rb
|
198
|
+
- lib/git/error.rb
|
210
199
|
- lib/git/escaped_path.rb
|
211
200
|
- lib/git/failed_error.rb
|
212
201
|
- lib/git/git_execute_error.rb
|
@@ -221,6 +210,7 @@ files:
|
|
221
210
|
- lib/git/stash.rb
|
222
211
|
- lib/git/stashes.rb
|
223
212
|
- lib/git/status.rb
|
213
|
+
- lib/git/timeout_error.rb
|
224
214
|
- lib/git/url.rb
|
225
215
|
- lib/git/version.rb
|
226
216
|
- lib/git/working_directory.rb
|
@@ -232,8 +222,8 @@ licenses:
|
|
232
222
|
metadata:
|
233
223
|
homepage_uri: http://github.com/ruby-git/ruby-git
|
234
224
|
source_code_uri: http://github.com/ruby-git/ruby-git
|
235
|
-
changelog_uri: https://rubydoc.info/gems/git/
|
236
|
-
documentation_uri: https://rubydoc.info/gems/git/
|
225
|
+
changelog_uri: https://rubydoc.info/gems/git/2.0.0.pre2/file/CHANGELOG.md
|
226
|
+
documentation_uri: https://rubydoc.info/gems/git/2.0.0.pre2
|
237
227
|
post_install_message:
|
238
228
|
rdoc_options: []
|
239
229
|
require_paths:
|
@@ -242,14 +232,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
242
232
|
requirements:
|
243
233
|
- - ">="
|
244
234
|
- !ruby/object:Gem::Version
|
245
|
-
version:
|
235
|
+
version: 3.0.0
|
246
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
247
237
|
requirements:
|
248
238
|
- - ">="
|
249
239
|
- !ruby/object:Gem::Version
|
250
240
|
version: '0'
|
251
241
|
requirements:
|
252
|
-
- git
|
242
|
+
- git 2.28.0 or greater
|
253
243
|
rubygems_version: 3.5.3
|
254
244
|
signing_key:
|
255
245
|
specification_version: 4
|