git-fastclone 1.4.3 → 1.4.4
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/README.md +6 -19
- data/lib/git-fastclone/version.rb +1 -1
- data/lib/git-fastclone.rb +11 -3
- data/spec/git_fastclone_runner_spec.rb +13 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7330529bf940f74fcdf782fa298d7de00d0f75b5ccbd303bb6a99d57668b6a0
|
4
|
+
data.tar.gz: 4dc5b12076314094bf03638433dcbc6df5f486b6b2b5da6ff2350c77942b23ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3ce186a25e7acbc07735118a7a9d55bbca2deee8ff7ba79ea8eebdb1dd8ecff2a01beb640528af0ed8d35a9a62bf03161b8afa545ca6ceb5b7b3ea62ce510ba
|
7
|
+
data.tar.gz: f6d0ec9167c8dc69ebdd7caad9c24d595bfd83c3400618d8eefaeb1e0ace4f6dc7a1eb4a752bb499f3c2dc16edf522096e4680dd69f414dcbef6dd9bc9addcd3
|
data/README.md
CHANGED
@@ -35,7 +35,7 @@ It aggressively updates these mirrors from origin and then clones from the mirro
|
|
35
35
|
directory of your choosing. It always works recursively and multithreaded to get your checkout up as
|
36
36
|
fast as possible.
|
37
37
|
|
38
|
-
Detailed explanation [here]
|
38
|
+
Detailed explanation [here](https://developer.squareup.com/blog/introducing-git-fastclone/).
|
39
39
|
|
40
40
|
|
41
41
|
Usage
|
@@ -71,7 +71,7 @@ requests.
|
|
71
71
|
When submitting code, please make every effort to follow existing conventions and style in order to
|
72
72
|
keep the code as readable as possible.
|
73
73
|
|
74
|
-
Before accepting any pull requests, we need you to sign an [Individual Contributor Agreement]
|
74
|
+
Before accepting any pull requests, we need you to sign an [Individual Contributor Agreement](https://docs.google.com/a/squareup.com/forms/d/13WR8m5uZ2nAkJH41k7GdVBXAAbzDk00vxtEYjd6Imzg/viewform?formkey=dDViT2xzUHAwRkI3X3k5Z0lQM091OGc6MQ&ndplr=1)
|
75
75
|
(Google form).
|
76
76
|
|
77
77
|
Once landed, please reach out to any owner listed in https://rubygems.org/gems/git-fastclone and ask them to help publish the new version.
|
@@ -79,15 +79,10 @@ Once landed, please reach out to any owner listed in https://rubygems.org/gems/g
|
|
79
79
|
|
80
80
|
Acknowledgements
|
81
81
|
----------------
|
82
|
-
[
|
83
|
-
|
84
|
-
[
|
85
|
-
|
86
|
-
[ianchesal][5]
|
87
|
-
|
88
|
-
[mtauraso][6]
|
89
|
-
|
90
|
-
[chriseckhardt][7]
|
82
|
+
* [robolson](https://github.com/robolson)
|
83
|
+
* [ianchesal](https://github.com/ianchesal)
|
84
|
+
* [mtauraso](https://github.com/mtauraso)
|
85
|
+
* [chriseckhardt](https://github.com/chriseckhardt)
|
91
86
|
|
92
87
|
|
93
88
|
License
|
@@ -105,11 +100,3 @@ License
|
|
105
100
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
106
101
|
See the License for the specific language governing permissions and
|
107
102
|
limitations under the License.
|
108
|
-
|
109
|
-
[1]: https://corner.squareup.com/2015/11/fastclone.html
|
110
|
-
[2]: https://docs.google.com/a/squareup.com/forms/d/13WR8m5uZ2nAkJH41k7GdVBXAAbzDk00vxtEYjd6Imzg/viewform?formkey=dDViT2xzUHAwRkI3X3k5Z0lQM091OGc6MQ&ndplr=1
|
111
|
-
[3]: https://github.com/thoughtbot/terrapin
|
112
|
-
[4]: https://github.com/robolson
|
113
|
-
[5]: https://github.com/ianchesal
|
114
|
-
[6]: https://github.com/mtauraso
|
115
|
-
[7]: https://github.com/chriseckhardt
|
data/lib/git-fastclone.rb
CHANGED
@@ -110,7 +110,7 @@ module GitFastClone
|
|
110
110
|
def run
|
111
111
|
url, path, options = parse_inputs
|
112
112
|
|
113
|
-
require_relative '
|
113
|
+
require_relative 'git-fastclone/version'
|
114
114
|
msg = "git-fastclone #{GitFastCloneVersion::VERSION}"
|
115
115
|
if color
|
116
116
|
puts msg.yellow
|
@@ -354,10 +354,17 @@ module GitFastClone
|
|
354
354
|
# To avoid corruption of the cache, if we failed to update or check out we remove
|
355
355
|
# the cache directory entirely. This may cause the current clone to fail, but if the
|
356
356
|
# underlying error from git is transient it will not affect future clones.
|
357
|
-
|
357
|
+
#
|
358
|
+
# The only exception to this is authentication failures, because they are transient,
|
359
|
+
# usually due to either a remote server outage or a local credentials config problem.
|
360
|
+
clear_cache(mirror, url) unless auth_error?(e.output)
|
358
361
|
raise e if fail_hard
|
359
362
|
end
|
360
363
|
|
364
|
+
def auth_error?(error)
|
365
|
+
error.to_s =~ /.*^fatal: Authentication failed/m
|
366
|
+
end
|
367
|
+
|
361
368
|
def retriable_error?(error)
|
362
369
|
error_strings = [
|
363
370
|
/^fatal: missing blob object/,
|
@@ -366,7 +373,8 @@ module GitFastClone
|
|
366
373
|
/^fatal: pack has \d+ unresolved delta/,
|
367
374
|
/^error: unable to read sha1 file of /,
|
368
375
|
/^fatal: did not receive expected object/,
|
369
|
-
/^fatal: unable to read tree [a-z0-9]+\n^warning: Clone succeeded, but checkout failed
|
376
|
+
/^fatal: unable to read tree [a-z0-9]+\n^warning: Clone succeeded, but checkout failed/,
|
377
|
+
/^fatal: Authentication failed/
|
370
378
|
]
|
371
379
|
error.to_s =~ /.*#{Regexp.union(error_strings)}/m
|
372
380
|
end
|
@@ -308,7 +308,7 @@ describe GitFastClone::Runner do
|
|
308
308
|
|
309
309
|
describe '.store_updated_repo' do
|
310
310
|
context 'when fail_hard is true' do
|
311
|
-
it 'should raise a Runtime error and clear cache' do
|
311
|
+
it 'should raise a Runtime error and clear cache if there were no authentication errors' do
|
312
312
|
status = double('status')
|
313
313
|
allow(status).to receive(:exitstatus).and_return(1)
|
314
314
|
ex = RunnerExecution::RunnerExecutionRuntimeError.new(status, 'cmd')
|
@@ -318,6 +318,18 @@ describe GitFastClone::Runner do
|
|
318
318
|
subject.store_updated_repo(placeholder_arg, placeholder_arg, placeholder_arg, true)
|
319
319
|
end.to raise_error(ex)
|
320
320
|
end
|
321
|
+
|
322
|
+
it 'should raise a Runtime error and skip clearing the cache if there were authentication errors' do
|
323
|
+
status = double('status')
|
324
|
+
allow(status).to receive(:exitstatus).and_return(1)
|
325
|
+
ex = RunnerExecution::RunnerExecutionRuntimeError.new(status, 'cmd')
|
326
|
+
allow(ex).to receive(:output).and_return('fatal: Authentication failed')
|
327
|
+
allow(subject).to receive(:fail_on_error) { raise ex }
|
328
|
+
expect(FileUtils).to_not receive(:remove_entry_secure).with(placeholder_arg, force: true)
|
329
|
+
expect do
|
330
|
+
subject.store_updated_repo(placeholder_arg, placeholder_arg, placeholder_arg, true)
|
331
|
+
end.to raise_error(ex)
|
332
|
+
end
|
321
333
|
end
|
322
334
|
|
323
335
|
context 'when fail_hard is false' do
|
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.4
|
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-11-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
requirements: []
|
69
|
-
rubygems_version: 3.
|
69
|
+
rubygems_version: 3.4.10
|
70
70
|
signing_key:
|
71
71
|
specification_version: 4
|
72
72
|
summary: git-clone --recursive on steroids!
|