|
@@ -0,0 +1,18 @@
|
|
|
|
|
+diff --git a/lib/git.js b/lib/git.js
|
|
|
|
|
+index 000ee9fc..a2a6cbb7 100644
|
|
|
|
|
+--- a/lib/git.js
|
|
|
|
|
++++ b/lib/git.js
|
|
|
|
|
+@@ -254,8 +254,11 @@ class GitFetcher extends Fetcher {
|
|
|
|
|
+ resolved: this.resolved,
|
|
|
|
|
+ integrity: null, // it'll always be different, if we have one
|
|
|
|
|
+ }).extract(tmp).then(() => handler(`${tmp}${this.spec.gitSubdir || ''}`), er => {
|
|
|
|
|
+- // fall back to ssh download if tarball fails
|
|
|
|
|
+- if (er.constructor.name.match(/^Http/)) {
|
|
|
|
|
++ // fall back to clone if the tarball download fails due to an
|
|
|
|
|
++ // HTTP error or if the response is not a valid tarball (e.g.
|
|
|
|
|
++ // a hosted provider returning an HTML sign-in page with 200)
|
|
|
|
|
++ if ((typeof er.statusCode === 'number' && er.statusCode >= 400) ||
|
|
|
|
|
++ /^TAR_/.test(er.code)) {
|
|
|
|
|
+ return this.#clone(handler, false)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ throw er
|