Browse Source

Gracefully handle missing integration branch in ticket page

tags/v1.7.0
James Moger 9 years ago
parent
commit
4a2fb11479

+ 3
- 1
releases.moxie View File

@@ -14,7 +14,8 @@ r27: {
design.
''
security: ~
fixes: ~
fixes:
- Fix exception when viewing a ticket with a patchset where the integration branch does not exist (issue-521, ticket-212)
changes:
- Replaced Dagger with Guice (ticket-80)
- Use release name as root directory in Gitblit GO artifacts (ticket-109)
@@ -37,6 +38,7 @@ r27: {
- Alex Lewis
- Florian Zschocke
- Paul Martin
- razzard
}

#

+ 14
- 4
src/main/java/com/gitblit/utils/JGitUtils.java View File

@@ -2270,7 +2270,7 @@ public class JGitUtils {
}

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 class JGitUtils {
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 @@ public class JGitUtils {
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 {

+ 1
- 0
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties View File

@@ -749,3 +749,4 @@ gb.sortHighestPriority = highest priority
gb.sortLowestPriority = lowest priority
gb.sortHighestSeverity = highest severity
gb.sortLowestSeverity = lowest severity
gb.missingIntegrationBranchMore = The target integration branch does not exist in the repository!

+ 0
- 1
src/main/java/com/gitblit/wicket/pages/TicketPage.html View File

@@ -557,7 +557,6 @@ pt push</pre>
</div>
</wicket:fragment>
<!-- VETOED PATCHSET FRAGMENT -->
<wicket:fragment wicket:id="vetoedFragment">
<div class="alert alert-error submit-info" style="padding:4px;">

+ 10
- 4
src/main/java/com/gitblit/wicket/pages/TicketPage.java View File

@@ -519,10 +519,10 @@ public class TicketPage extends RepositoryPage {
* TICKET METADATA
*/
add(new Label("ticketType", ticket.type.toString()));
add(new Label("priority", ticket.priority.toString()));
add(new Label("severity", ticket.severity.toString()));
if (StringUtils.isEmpty(ticket.topic)) {
add(new Label("ticketTopic").setVisible(false));
} else {
@@ -531,8 +531,8 @@ public class TicketPage extends RepositoryPage {
String safeTopic = app().xssFilter().relaxed(topic);
add(new Label("ticketTopic", safeTopic).setEscapeModelStrings(false));
}
/*
@@ -1431,6 +1431,12 @@ public class TicketPage extends RepositoryPage {
Fragment mergePanel = new Fragment("mergePanel", "alreadyMergedFragment", this);
mergePanel.add(new Label("mergeTitle", MessageFormat.format(getString("gb.patchsetAlreadyMerged"), ticket.mergeTo)));
return mergePanel;
} else if (MergeStatus.MISSING_INTEGRATION_BRANCH == mergeStatus) {
// target/integration branch is missing
Fragment mergePanel = new Fragment("mergePanel", "notMergeableFragment", this);
mergePanel.add(new Label("mergeTitle", MessageFormat.format(getString("gb.patchsetNotMergeable"), ticket.mergeTo)));
mergePanel.add(new Label("mergeMore", MessageFormat.format(getString("gb.missingIntegrationBranchMore"), ticket.mergeTo)));
return mergePanel;
} else {
// patchset can not be cleanly merged
Fragment mergePanel = new Fragment("mergePanel", "notMergeableFragment", this);

Loading…
Cancel
Save