git-fastclone 1.4.3 → 1.4.5

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: 4b755aef58d17ded702b989b16fb92cf93908413403bb99f92b542319c59fdbc
4
- data.tar.gz: c7ad9ab44516bea864027aa562af274bd49999aea62eccbfc3df9421cc6674d6
3
+ metadata.gz: f23af05975dc472665784e91a3e69112694837cbd2a873076a7fb3197828970f
4
+ data.tar.gz: b3e2a26cbf1aff738c647eb37aa6b661975a396b680352288f68c0ba20da429d
5
5
  SHA512:
6
- metadata.gz: 8f6cff1907474ac42d8a4936dba9e5e684440b72f9995ce80bdb0bc79bc169d79969386b32eb3c8e8cc64358fc1872b0cbb07011d2bebfd753b04423fc1198be
7
- data.tar.gz: 889d56227ae2aff1aba3d9dfc33fdd7ab554b9f6ae77f21c036c66af5c2eb47756d49e62a2244ca922855442856caaeb772baace5bc1c9f093d1eae0a3043b02
6
+ metadata.gz: b9f239ae1a6cdf02d8aef5944f4d704bffaeb0d410191d7f5b7c759ba1d525dca27dd8efcec2e19ac4ffee9787ff3706b16860d0e16ff493136bcb2378b70a7c
7
+ data.tar.gz: fb954090b896bf41a396c956847133fc7d367fc564fbc8e3973ed61f2738b16f3926397b4526994d6c6d1781439970055f67e5c7d8137a0174a4f614b69f7a60
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][1].
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][2]
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
- [thoughtbot/terrapin][3] - jyurek and collaborators
83
-
84
- [robolson][4]
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Version string for git-fastclone
4
4
  module GitFastCloneVersion
5
- VERSION = '1.4.3'
5
+ VERSION = '1.4.5'
6
6
  end
data/lib/git-fastclone.rb CHANGED
@@ -47,13 +47,23 @@ module GitFastClone
47
47
  end
48
48
  module_function :reference_repo_dir
49
49
 
50
+ def reference_filename(filename)
51
+ separator = if RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
52
+ '__'
53
+ else
54
+ ':'
55
+ end
56
+ "#{separator}#{filename}"
57
+ end
58
+ module_function :reference_filename
59
+
50
60
  def reference_repo_submodule_file(url, reference_dir, using_local_repo)
51
- "#{reference_repo_dir(url, reference_dir, using_local_repo)}:submodules.txt"
61
+ "#{reference_repo_dir(url, reference_dir, using_local_repo)}#{reference_filename('submodules.txt')}"
52
62
  end
53
63
  module_function :reference_repo_submodule_file
54
64
 
55
65
  def reference_repo_lock_file(url, reference_dir, using_local_repo)
56
- lock_file_name = "#{reference_repo_dir(url, reference_dir, using_local_repo)}:lock"
66
+ lock_file_name = "#{reference_repo_dir(url, reference_dir, using_local_repo)}#{reference_filename('lock')}"
57
67
  File.open(lock_file_name, File::RDWR | File::CREAT, 0o644)
58
68
  end
59
69
  module_function :reference_repo_lock_file
@@ -110,7 +120,7 @@ module GitFastClone
110
120
  def run
111
121
  url, path, options = parse_inputs
112
122
 
113
- require_relative './git-fastclone/version'
123
+ require_relative 'git-fastclone/version'
114
124
  msg = "git-fastclone #{GitFastCloneVersion::VERSION}"
115
125
  if color
116
126
  puts msg.yellow
@@ -354,10 +364,17 @@ module GitFastClone
354
364
  # To avoid corruption of the cache, if we failed to update or check out we remove
355
365
  # the cache directory entirely. This may cause the current clone to fail, but if the
356
366
  # underlying error from git is transient it will not affect future clones.
357
- clear_cache(mirror, url)
367
+ #
368
+ # The only exception to this is authentication failures, because they are transient,
369
+ # usually due to either a remote server outage or a local credentials config problem.
370
+ clear_cache(mirror, url) unless auth_error?(e.output)
358
371
  raise e if fail_hard
359
372
  end
360
373
 
374
+ def auth_error?(error)
375
+ error.to_s =~ /.*^fatal: Authentication failed/m
376
+ end
377
+
361
378
  def retriable_error?(error)
362
379
  error_strings = [
363
380
  /^fatal: missing blob object/,
@@ -366,7 +383,8 @@ module GitFastClone
366
383
  /^fatal: pack has \d+ unresolved delta/,
367
384
  /^error: unable to read sha1 file of /,
368
385
  /^fatal: did not receive expected object/,
369
- /^fatal: unable to read tree [a-z0-9]+\n^warning: Clone succeeded, but checkout failed/
386
+ /^fatal: unable to read tree [a-z0-9]+\n^warning: Clone succeeded, but checkout failed/,
387
+ /^fatal: Authentication failed/
370
388
  ]
371
389
  error.to_s =~ /.*#{Regexp.union(error_strings)}/m
372
390
  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.3
4
+ version: 1.4.5
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-09-01 00:00:00.000000000 Z
12
+ date: 2023-12-14 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.1.6
69
+ rubygems_version: 3.4.10
70
70
  signing_key:
71
71
  specification_version: 4
72
72
  summary: git-clone --recursive on steroids!