git-fastclone 1.4.0 → 1.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 +4 -4
- data/lib/git-fastclone/version.rb +1 -1
- data/lib/git-fastclone.rb +8 -17
- data/lib/runner_execution.rb +0 -28
- data/spec/git_fastclone_runner_spec.rb +14 -20
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e915bc1276ac42ac35559122dc1c12f4a04778032ec4510fe96a64b37fc4a7a
|
4
|
+
data.tar.gz: 9fcb6e4a441106da6b09f2d4b39cf0e740942ae99de051712fba27656d962f04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc52b41c18799ec2154000bc7762c8301ed50f28d2eb252e4adcdc82ff36cdc6e3fa772d85db4d52ea95782ea16e02ea0460f1488b5ce95a745ee8a451511a3d
|
7
|
+
data.tar.gz: f86877adef196e5416e69aac06c7129bfaf22a21a566a5afe05e4780da60cdc3f0e2379e81d1bc0b4e8bd129d18a893f925dbd7096a4057ef428f085a964b2f2
|
data/lib/git-fastclone.rb
CHANGED
@@ -212,13 +212,13 @@ module GitFastClone
|
|
212
212
|
clone_commands = ['git', 'clone', verbose ? '--verbose' : '--quiet']
|
213
213
|
clone_commands << '--reference' << mirror.to_s << url.to_s << clone_dest
|
214
214
|
clone_commands << '--config' << config.to_s unless config.nil?
|
215
|
-
|
215
|
+
fail_on_error(*clone_commands, quiet: !verbose)
|
216
216
|
end
|
217
217
|
|
218
218
|
# Only checkout if we're changing branches to a non-default branch
|
219
219
|
if rev
|
220
220
|
Dir.chdir(File.join(abs_clone_path, src_dir)) do
|
221
|
-
|
221
|
+
fail_on_error('git', 'checkout', '--quiet', rev.to_s, quiet: !verbose)
|
222
222
|
end
|
223
223
|
end
|
224
224
|
|
@@ -261,10 +261,9 @@ module GitFastClone
|
|
261
261
|
threads << Thread.new do
|
262
262
|
with_git_mirror(submodule_url) do |mirror, _|
|
263
263
|
Dir.chdir(File.join(abs_clone_path, pwd).to_s) do
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
)
|
264
|
+
cmd = ['git', 'submodule', verbose ? nil : '--quiet', 'update', '--reference', mirror.to_s,
|
265
|
+
submodule_path.to_s].compact
|
266
|
+
fail_on_error(*cmd, quiet: !verbose)
|
268
267
|
end
|
269
268
|
end
|
270
269
|
|
@@ -337,21 +336,13 @@ module GitFastClone
|
|
337
336
|
# that this repo has been updated on this run of fastclone
|
338
337
|
def store_updated_repo(url, mirror, repo_name, fail_hard)
|
339
338
|
unless Dir.exist?(mirror)
|
340
|
-
|
341
|
-
|
342
|
-
mirror.to_s], quiet: !verbose
|
343
|
-
)
|
339
|
+
fail_on_error('git', 'clone', verbose ? '--verbose' : '--quiet', '--mirror', url.to_s, mirror.to_s,
|
340
|
+
quiet: !verbose)
|
344
341
|
end
|
345
342
|
|
346
343
|
Dir.chdir(mirror) do
|
347
344
|
cmd = ['git', 'remote', verbose ? '--verbose' : nil, 'update', '--prune'].compact
|
348
|
-
|
349
|
-
fail_pipe_on_error(cmd, quiet: !verbose)
|
350
|
-
else
|
351
|
-
# Because above operation might spit out a lot to stderr, we use this to swallow them
|
352
|
-
# and only display if the operation return non 0 exit code
|
353
|
-
fail_on_error(*cmd, quiet: !verbose)
|
354
|
-
end
|
345
|
+
fail_on_error(*cmd, quiet: !verbose)
|
355
346
|
end
|
356
347
|
reference_updated[repo_name] = true
|
357
348
|
rescue RunnerExecutionRuntimeError => e
|
data/lib/runner_execution.rb
CHANGED
@@ -20,34 +20,6 @@ module RunnerExecution
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
# Wrapper around open3.pipeline_r which fails on error.
|
24
|
-
# and stops users from invoking the shell by accident.
|
25
|
-
def fail_pipe_on_error(*cmd_list, quiet: false, **opts)
|
26
|
-
print_command('Running Pipeline:', cmd_list) unless quiet
|
27
|
-
|
28
|
-
env = opts.delete(:env) { {} }
|
29
|
-
raise ArgumentError, "The :env option must be a hash, not #{env.inspect}" unless env.is_a?(Hash)
|
30
|
-
|
31
|
-
cmd_list.map! { |cmd| shell_safe(cmd).unshift(env) }
|
32
|
-
|
33
|
-
output, *status_list = Open3.pipeline_r(*cmd_list, opts) do |out, wait_threads|
|
34
|
-
out_reader = Thread.new do
|
35
|
-
if quiet
|
36
|
-
output = out.read
|
37
|
-
else
|
38
|
-
# Output from pipeline should go to stdout and also get returned for
|
39
|
-
# processing if necessary.
|
40
|
-
output = tee(out, STDOUT)
|
41
|
-
end
|
42
|
-
out.close
|
43
|
-
output
|
44
|
-
end
|
45
|
-
[out_reader.value] + wait_threads.map(&:value)
|
46
|
-
end
|
47
|
-
exit_on_status(output, cmd_list, status_list, quiet: quiet)
|
48
|
-
end
|
49
|
-
module_function :fail_pipe_on_error
|
50
|
-
|
51
23
|
# Runs a command that fails on error.
|
52
24
|
# Uses popen2e wrapper. Handles bad statuses with potential for retries.
|
53
25
|
def fail_on_error(*cmd, stdin_data: nil, binmode: false, quiet: false, **opts)
|
@@ -89,7 +89,7 @@ describe GitFastClone::Runner do
|
|
89
89
|
describe '.clone' do
|
90
90
|
let(:runner_execution_double) { double('runner_execution') }
|
91
91
|
before(:each) do
|
92
|
-
allow(runner_execution_double).to receive(:
|
92
|
+
allow(runner_execution_double).to receive(:fail_on_error) {}
|
93
93
|
allow(Dir).to receive(:pwd) { '/pwd' }
|
94
94
|
allow(Dir).to receive(:chdir).and_yield
|
95
95
|
allow(subject).to receive(:with_git_mirror).and_yield('/cache', 0)
|
@@ -97,12 +97,12 @@ describe GitFastClone::Runner do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'should clone correctly' do
|
100
|
-
expect(subject).to receive(:
|
101
|
-
|
100
|
+
expect(subject).to receive(:fail_on_error).with(
|
101
|
+
'git', 'checkout', '--quiet', 'PH',
|
102
102
|
{ quiet: true }
|
103
103
|
) { runner_execution_double }
|
104
|
-
expect(subject).to receive(:
|
105
|
-
|
104
|
+
expect(subject).to receive(:fail_on_error).with(
|
105
|
+
'git', 'clone', '--quiet', '--reference', '/cache', 'PH', '/pwd/.',
|
106
106
|
{ quiet: true }
|
107
107
|
) { runner_execution_double }
|
108
108
|
|
@@ -111,12 +111,12 @@ describe GitFastClone::Runner do
|
|
111
111
|
|
112
112
|
it 'should clone correctly with verbose mode on' do
|
113
113
|
subject.verbose = true
|
114
|
-
expect(subject).to receive(:
|
115
|
-
|
114
|
+
expect(subject).to receive(:fail_on_error).with(
|
115
|
+
'git', 'checkout', '--quiet', 'PH',
|
116
116
|
{ quiet: false }
|
117
117
|
) { runner_execution_double }
|
118
|
-
expect(subject).to receive(:
|
119
|
-
|
118
|
+
expect(subject).to receive(:fail_on_error).with(
|
119
|
+
'git', 'clone', '--verbose', '--reference', '/cache', 'PH', '/pwd/.',
|
120
120
|
{ quiet: false }
|
121
121
|
) { runner_execution_double }
|
122
122
|
|
@@ -124,8 +124,8 @@ describe GitFastClone::Runner do
|
|
124
124
|
end
|
125
125
|
|
126
126
|
it 'should clone correctly with custom configs' do
|
127
|
-
expect(subject).to receive(:
|
128
|
-
|
127
|
+
expect(subject).to receive(:fail_on_error).with(
|
128
|
+
'git', 'clone', '--quiet', '--reference', '/cache', 'PH', '/pwd/.', '--config', 'config',
|
129
129
|
{ quiet: true }
|
130
130
|
) { runner_execution_double }
|
131
131
|
|
@@ -298,7 +298,7 @@ describe GitFastClone::Runner do
|
|
298
298
|
status = double('status')
|
299
299
|
allow(status).to receive(:exitstatus).and_return(1)
|
300
300
|
ex = RunnerExecution::RunnerExecutionRuntimeError.new(status, 'cmd')
|
301
|
-
allow(subject).to receive(:
|
301
|
+
allow(subject).to receive(:fail_on_error) { raise ex }
|
302
302
|
expect(FileUtils).to receive(:remove_entry_secure).with(placeholder_arg, force: true)
|
303
303
|
expect do
|
304
304
|
subject.store_updated_repo(placeholder_arg, placeholder_arg, placeholder_arg, true)
|
@@ -311,7 +311,7 @@ describe GitFastClone::Runner do
|
|
311
311
|
status = double('status')
|
312
312
|
allow(status).to receive(:exitstatus).and_return(1)
|
313
313
|
ex = RunnerExecution::RunnerExecutionRuntimeError.new(status, 'cmd')
|
314
|
-
allow(subject).to receive(:
|
314
|
+
allow(subject).to receive(:fail_on_error) { raise ex }
|
315
315
|
expect(FileUtils).to receive(:remove_entry_secure).with(placeholder_arg, force: true)
|
316
316
|
expect do
|
317
317
|
subject.store_updated_repo(placeholder_arg, placeholder_arg, placeholder_arg, false)
|
@@ -322,7 +322,7 @@ describe GitFastClone::Runner do
|
|
322
322
|
let(:placeholder_hash) { {} }
|
323
323
|
|
324
324
|
it 'should correctly update the hash' do
|
325
|
-
allow(subject).to receive(:
|
325
|
+
allow(subject).to receive(:fail_on_error)
|
326
326
|
allow(Dir).to receive(:chdir) {}
|
327
327
|
|
328
328
|
subject.reference_updated = placeholder_hash
|
@@ -367,12 +367,6 @@ describe GitFastClone::Runner do
|
|
367
367
|
let(:expected_commands) { [] }
|
368
368
|
|
369
369
|
before(:each) do
|
370
|
-
allow(subject).to receive(:fail_pipe_on_error) { |*params|
|
371
|
-
command = params[0]
|
372
|
-
expect(expected_commands.length).to be > 0
|
373
|
-
expected_command = expected_commands.shift
|
374
|
-
expect(command).to eq(expected_command)
|
375
|
-
}
|
376
370
|
allow(subject).to receive(:fail_on_error) { |*params|
|
377
371
|
# last one is an argument `quiet:`
|
378
372
|
command = params.first(params.size - 1)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-fastclone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Tauraso
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-05-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|