From 4a2fb11479c9b53ffe4e2e1cca82205ca122753b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 31 Oct 2014 09:08:37 -0400 Subject: [PATCH] Gracefully handle missing integration branch in ticket page --- src/main/java/com/gitblit/utils/JGitUtils.java | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gitblit/utils/JGitUtils.java b/src/main/java/com/gitblit/utils/JGitUtils.java index da51ea9..68c62ea 100644 --- a/src/main/java/com/gitblit/utils/JGitUtils.java +++ b/src/main/java/com/gitblit/utils/JGitUtils.java @@ -2270,7 +2270,7 @@ } public static enum MergeStatus { - NOT_MERGEABLE, FAILED, ALREADY_MERGED, MERGEABLE, MERGED; + MISSING_INTEGRATION_BRANCH, MISSING_SRC_BRANCH, NOT_MERGEABLE, FAILED, ALREADY_MERGED, MERGEABLE, MERGED; } /** @@ -2285,9 +2285,17 @@ public static MergeStatus canMerge(Repository repository, String src, String toBranch) { RevWalk revWalk = null; try { - revWalk = new RevWalk(repository); - RevCommit branchTip = revWalk.lookupCommit(repository.resolve(toBranch)); - RevCommit srcTip = revWalk.lookupCommit(repository.resolve(src)); + revWalk = new RevWalk(repository); + ObjectId branchId = repository.resolve(toBranch); + if (branchId == null) { + return MergeStatus.MISSING_INTEGRATION_BRANCH; + } + ObjectId srcId = repository.resolve(src); + if (srcId == null) { + return MergeStatus.MISSING_SRC_BRANCH; + } + RevCommit branchTip = revWalk.lookupCommit(branchId); + RevCommit srcTip = revWalk.lookupCommit(srcId); if (revWalk.isMergedInto(srcTip, branchTip)) { // already merged return MergeStatus.ALREADY_MERGED; @@ -2300,6 +2308,8 @@ if (canMerge) { return MergeStatus.MERGEABLE; } + } catch (NullPointerException e) { + LOGGER.error("Failed to determine canMerge", e); } catch (IOException e) { LOGGER.error("Failed to determine canMerge", e); } finally { -- Gitblit v1.9.1