From d0d93d70702d127b51acdcd5f1e4e1572e3594da Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Thu, 1 Feb 2018 10:42:14 +0000 Subject: [PATCH] Handle more repo clone error cases --- editor/js/ui/projects/projects.js | 25 ++++++++++++++++++- .../localfilesystem/projects/git/index.js | 4 +++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/editor/js/ui/projects/projects.js b/editor/js/ui/projects/projects.js index cf6cc7b68..d5e73e05a 100644 --- a/editor/js/ui/projects/projects.js +++ b/editor/js/ui/projects/projects.js @@ -889,12 +889,18 @@ RED.projects = (function() { row = $('
').appendTo(container); $('').appendTo(row); projectRepoInput = $('').appendTo(row); - $('').appendTo(row); + $('').appendTo(row); var projectRepoChanged = false; + var lastProjectRepo = ""; projectRepoInput.on("change keyup paste",function() { projectRepoChanged = true; var repo = $(this).val(); + if (lastProjectRepo !== repo) { + $("#projects-dialog-screen-create-project-repo-label small").text("https://, ssh:// or file://"); + } + lastProjectRepo = repo; + var m = /\/([^/]+?)(?:\.git)?$/.exec(repo); if (m) { var projectName = projectNameInput.val(); @@ -1069,6 +1075,14 @@ RED.projects = (function() { }) } + $(".projects-dialog-screen-create-row-auth-error").hide(); + + projectRepoUserInput.removeClass("input-error"); + projectRepoPasswordInput.removeClass("input-error"); + projectRepoSSHKeySelect.removeClass("input-error"); + projectRepoPassphrase.removeClass("input-error"); + + RED.deploy.setDeployInflight(true); RED.projects.settings.switchProject(projectData.name); @@ -1089,6 +1103,15 @@ RED.projects = (function() { }, 'git_connection_failed': function(error) { projectRepoInput.addClass("input-error"); + $("#projects-dialog-screen-create-project-repo-label small").text("Connection failed"); + }, + 'git_not_a_repository': function(error) { + projectRepoInput.addClass("input-error"); + $("#projects-dialog-screen-create-project-repo-label small").text("Not a git repository"); + }, + 'git_repository_not_found': function(error) { + projectRepoInput.addClass("input-error"); + $("#projects-dialog-screen-create-project-repo-label small").text("Repository not found"); }, 'git_auth_failed': function(error) { $(".projects-dialog-screen-create-row-auth-error").show(); diff --git a/red/runtime/storage/localfilesystem/projects/git/index.js b/red/runtime/storage/localfilesystem/projects/git/index.js index 076fe8293..0851f2257 100644 --- a/red/runtime/storage/localfilesystem/projects/git/index.js +++ b/red/runtime/storage/localfilesystem/projects/git/index.js @@ -63,6 +63,10 @@ function runGitCommand(args,cwd,env) { err.code = "git_delete_branch_unmerged"; } else if (/remote .* already exists/.test(stderr)) { err.code = "git_remote_already_exists"; + } else if (/does not appear to be a git repository/.test(stderr)) { + err.code = "git_not_a_repository"; + } else if (/Repository not found/i.test(stderr)) { + err.code = "git_repository_not_found"; } return reject(err); }