From 3f85dc80f4a0f019865b59550e0d0c51bb758952 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 11 Dec 2018 12:35:21 +0000 Subject: [PATCH 1/7] When user clone/pull/etc a project which doesn't exist, print a nice message The old behaviour was to just show an equivalent of a 500 error. This way, we catch the 404 from the API, and print an appropriate message to the user. --- .../git/handler/WLRepositoryResolver.java | 3 ++ .../base/MissingRepositoryException.java | 41 +++++++++---------- .../ic/wlgitbridge/snapshot/base/Request.java | 2 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java index 022101fc5b..6108078314 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java @@ -13,6 +13,7 @@ import uk.ac.ic.wlgitbridge.git.servlet.WLGitServlet; import uk.ac.ic.wlgitbridge.server.GitBridgeServer; import uk.ac.ic.wlgitbridge.server.Oauth2Filter; import uk.ac.ic.wlgitbridge.snapshot.base.ForbiddenException; +import uk.ac.ic.wlgitbridge.snapshot.base.MissingRepositoryException; import uk.ac.ic.wlgitbridge.util.Log; import uk.ac.ic.wlgitbridge.util.Util; @@ -97,6 +98,8 @@ public class WLRepositoryResolver } catch (ServiceNotEnabledException e) { cannot occur */ + } catch (MissingRepositoryException e) { + throw new ServiceMayNotContinueException(String.join("\n", e.getDescriptionLines()), e); } catch (ServiceMayNotContinueException e) { /* Such as FailedConnectionException */ throw e; diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java index 9578c18f27..39d28e6b57 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java @@ -10,43 +10,40 @@ import java.util.List; public class MissingRepositoryException extends SnapshotAPIException { public static final List GENERIC_REASON = Arrays.asList( - "This Overleaf project currently has no git access.", + "This Overleaf project currently has no git access, either", + "because the project does not exist, or git access is not enabled for the project.", "", - "If this problem persists, please contact us." + "If this problem persists, please contact us at at support@overleaf.com" ); static List buildExportedToV2Message(String remoteUrl) { if (remoteUrl == null) { return Arrays.asList( - "This Overleaf project has been moved to Overleaf v2 and cannot be used with git at this time.", - "", - "If this error persists, please contact us at support@overleaf.com, or", - "see https://www.overleaf.com/help/342 for more information." + "This Overleaf project has been moved to Overleaf v2 and cannot be used with git at this time.", + "", + "If this error persists, please contact us at support@overleaf.com, or", + "see https://www.overleaf.com/help/342 for more information." ); } else { return Arrays.asList( - "This Overleaf project has been moved to Overleaf v2 and has a new identifier.", - "Please update your remote to:", - "", - " " + remoteUrl, - "", - "Assuming you are using the default \"origin\" remote, the following commands", - "will change the remote for you:", - "", - " git remote set-url origin " + remoteUrl, - "", - "If this does not work, please contact us at support@overleaf.com, or", - "see https://www.overleaf.com/help/342 for more information." + "This Overleaf project has been moved to Overleaf v2 and has a new identifier.", + "Please update your remote to:", + "", + " " + remoteUrl, + "", + "Assuming you are using the default \"origin\" remote, the following commands", + "will change the remote for you:", + "", + " git remote set-url origin " + remoteUrl, + "", + "If this does not work, please contact us at support@overleaf.com, or", + "see https://www.overleaf.com/help/342 for more information." ); } } private List descriptionLines; - public MissingRepositoryException() { - descriptionLines = new ArrayList(); - } - public MissingRepositoryException(List descriptionLines) { this.descriptionLines = descriptionLines; } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java index 65dc8af0b9..23c0b1d8f7 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java @@ -97,7 +97,7 @@ public abstract class Request { // disregard any errors that arose while handling the JSON } - throw new MissingRepositoryException(); + throw new MissingRepositoryException(MissingRepositoryException.GENERIC_REASON); } else if (sc >= 400 && sc < 500) { throw new MissingRepositoryException(MissingRepositoryException.GENERIC_REASON); } From 27e115209528b4720e281f83c917d12b59e8424b Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 13 Dec 2018 10:34:09 +0000 Subject: [PATCH 2/7] Fix wording of the generic-error when a repository is missing --- .../snapshot/base/MissingRepositoryException.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java index 39d28e6b57..ea9d6f07d7 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java @@ -11,9 +11,10 @@ public class MissingRepositoryException extends SnapshotAPIException { public static final List GENERIC_REASON = Arrays.asList( "This Overleaf project currently has no git access, either", - "because the project does not exist, or git access is not enabled for the project.", + "because the project does not exist, or because git access is not enabled for the project.", "", - "If this problem persists, please contact us at at support@overleaf.com" + "If this is unexpected, please contact us at support@overleaf.com, or", + "see https://www.overleaf.com/help/342 for more information." ); static List buildExportedToV2Message(String remoteUrl) { From 2f18feb136bf5f7659fbb83dbf756c769571204a Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 13 Dec 2018 11:40:08 +0000 Subject: [PATCH 3/7] Keep the default constructor for MissingRepositoryException --- .../wlgitbridge/snapshot/base/MissingRepositoryException.java | 2 ++ .../main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java index ea9d6f07d7..9a9e233fc3 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java @@ -45,6 +45,8 @@ public class MissingRepositoryException extends SnapshotAPIException { private List descriptionLines; + public MissingRepositoryException() { this.descriptionLines = GENERIC_REASON; } + public MissingRepositoryException(List descriptionLines) { this.descriptionLines = descriptionLines; } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java index 23c0b1d8f7..65dc8af0b9 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java @@ -97,7 +97,7 @@ public abstract class Request { // disregard any errors that arose while handling the JSON } - throw new MissingRepositoryException(MissingRepositoryException.GENERIC_REASON); + throw new MissingRepositoryException(); } else if (sc >= 400 && sc < 500) { throw new MissingRepositoryException(MissingRepositoryException.GENERIC_REASON); } From bf7be6071db77306939f60ef25b2ad4772ad27e8 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 13 Dec 2018 11:41:07 +0000 Subject: [PATCH 4/7] Handle GitUserException, with multiple lines of output --- .../ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java index 6108078314..f935605af7 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java @@ -98,8 +98,6 @@ public class WLRepositoryResolver } catch (ServiceNotEnabledException e) { cannot occur */ - } catch (MissingRepositoryException e) { - throw new ServiceMayNotContinueException(String.join("\n", e.getDescriptionLines()), e); } catch (ServiceMayNotContinueException e) { /* Such as FailedConnectionException */ throw e; @@ -112,7 +110,7 @@ public class WLRepositoryResolver } catch (ForbiddenException e) { throw new ServiceNotAuthorizedException(); } catch (GitUserException e) { - throw new ServiceMayNotContinueException(e.getMessage(), e); + throw new ServiceMayNotContinueException(String.join("\n", e.getDescriptionLines()), e); } catch (IOException e) { Log.warn( "IOException when trying to open repo: " + projName, From a766482a0054384e9b7291af6f15033bbafb7759 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 13 Dec 2018 12:37:09 +0000 Subject: [PATCH 5/7] Remove stray import --- .../uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java | 1 - 1 file changed, 1 deletion(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java index f935605af7..505d0bd862 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java @@ -13,7 +13,6 @@ import uk.ac.ic.wlgitbridge.git.servlet.WLGitServlet; import uk.ac.ic.wlgitbridge.server.GitBridgeServer; import uk.ac.ic.wlgitbridge.server.Oauth2Filter; import uk.ac.ic.wlgitbridge.snapshot.base.ForbiddenException; -import uk.ac.ic.wlgitbridge.snapshot.base.MissingRepositoryException; import uk.ac.ic.wlgitbridge.util.Log; import uk.ac.ic.wlgitbridge.util.Util; From abcaf8242e3d5ea200fab4a69e318c04b5597eb7 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 13 Dec 2018 12:37:21 +0000 Subject: [PATCH 6/7] Include message along with error description lines --- .../ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java index 505d0bd862..e0ee16b366 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/git/handler/WLRepositoryResolver.java @@ -109,7 +109,10 @@ public class WLRepositoryResolver } catch (ForbiddenException e) { throw new ServiceNotAuthorizedException(); } catch (GitUserException e) { - throw new ServiceMayNotContinueException(String.join("\n", e.getDescriptionLines()), e); + throw new ServiceMayNotContinueException( + e.getMessage() + "\n" + + String.join("\n", e.getDescriptionLines()), + e); } catch (IOException e) { Log.warn( "IOException when trying to open repo: " + projName, From 9ee39ae930591d1a87b62dadffb884f60b9a5570 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 13 Dec 2018 12:37:42 +0000 Subject: [PATCH 7/7] Wrap the generic repository-missing message correctly Now appears to the client as: ``` fatal: remote error: no git access This Overleaf project currently has no git access, either because the project does not exist, or because git access is not enabled for the project. ``` --- .../snapshot/base/MissingRepositoryException.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java index 9a9e233fc3..320e3d192e 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java @@ -10,8 +10,9 @@ import java.util.List; public class MissingRepositoryException extends SnapshotAPIException { public static final List GENERIC_REASON = Arrays.asList( - "This Overleaf project currently has no git access, either", - "because the project does not exist, or because git access is not enabled for the project.", + "This Overleaf project currently has no git access, either because", + "the project does not exist, or because git access is not enabled", + "for the project.", "", "If this is unexpected, please contact us at support@overleaf.com, or", "see https://www.overleaf.com/help/342 for more information."