Interactive rebase: Fix order of commit messages on squash
Bug: 431214
Change-Id: I295bfdc5751545b046d7fe7efc3f8b39ab4f5415
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
Signed-off-by: Robin Rosennberg <robin.rosenberg@dewire.com>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
index 40eb494..c5829ec 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
@@ -2347,7 +2347,7 @@ public String modifyCommitMessage(String commit) {
assertFalse(messageFixupFile.exists());
assertTrue(messageSquashFile.exists());
assertEquals(
- "# This is a combination of 2 commits.\n# This is the 2nd commit message:\nupdated file1 on master\nnew line\n# The first commit's message is:\nAdd file2\nnew line",
+ "# This is a combination of 2 commits.\n# The first commit's message is:\nAdd file2\nnew line\n# This is the 2nd commit message:\nupdated file1 on master\nnew line",
commit);
try {
@@ -2426,7 +2426,7 @@ public String modifyCommitMessage(String commit) {
assertFalse(messageFixupFile.exists());
assertTrue(messageSquashFile.exists());
assertEquals(
- "# This is a combination of 3 commits.\n# This is the 3rd commit message:\nupdated file1 on master\nnew line\n# This is the 2nd commit message:\nAdd file2\nnew line\n# The first commit's message is:\nAdd file1\nnew line",
+ "# This is a combination of 3 commits.\n# The first commit's message is:\nAdd file1\nnew line\n# This is the 2nd commit message:\nAdd file2\nnew line\n# This is the 3rd commit message:\nupdated file1 on master\nnew line",
commit);
try {
@@ -2441,7 +2441,7 @@ public String modifyCommitMessage(String commit) {
fail(t.getMessage());
}
- return "# This is a combination of 3 commits.\n# This is the 3rd commit message:\nupdated file1 on master\nnew line\n# This is the 2nd commit message:\nAdd file2\nnew line\n# The first commit's message is:\nAdd file1\nnew line";
+ return "# This is a combination of 3 commits.\n# The first commit's message is:\nAdd file1\nnew line\n# This is the 2nd commit message:\nAdd file2\nnew line\n# This is the 3rd commit message:\nupdated file1 on master\nnew line";
}
}).call();
@@ -2454,7 +2454,7 @@ public String modifyCommitMessage(String commit) {
ObjectId head2Id = db.resolve(Constants.HEAD + "^1");
RevCommit head1Commit = walk.parseCommit(head2Id);
assertEquals(
- "updated file1 on master\nnew line\nAdd file2\nnew line\nAdd file1\nnew line",
+ "Add file1\nnew line\nAdd file2\nnew line\nupdated file1 on master\nnew line",
head1Commit.getFullMessage());
}
@@ -2508,7 +2508,7 @@ public String modifyCommitMessage(String commit) {
assertFalse(messageFixupFile.exists());
assertTrue(messageSquashFile.exists());
assertEquals(
- "# This is a combination of 3 commits.\n# This is the 3rd commit message:\nupdated file1 on master\nnew line\n# The 2nd commit message will be skipped:\n# Add file2\n# new line\n# The first commit's message is:\nAdd file1\nnew line",
+ "# This is a combination of 3 commits.\n# The first commit's message is:\nAdd file1\nnew line\n# The 2nd commit message will be skipped:\n# Add file2\n# new line\n# This is the 3rd commit message:\nupdated file1 on master\nnew line",
commit);
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
index 330902c..3b84917 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
@@ -621,6 +621,9 @@ private static String composeSquashMessage(boolean isSquash,
sb.setLength(0);
sb.append("# This is a combination of ").append(count)
.append(" commits.\n");
+ // Add the previous message without header (i.e first line)
+ sb.append(currSquashMessage.substring(currSquashMessage.indexOf("\n") + 1));
+ sb.append("\n");
if (isSquash) {
sb.append("# This is the ").append(count).append(ordinal)
.append(" commit message:\n");
@@ -631,9 +634,6 @@ private static String composeSquashMessage(boolean isSquash,
sb.append(commitToPick.getFullMessage().replaceAll("([\n\r])",
"$1# "));
}
- // Add the previous message without header (i.e first line)
- sb.append("\n");
- sb.append(currSquashMessage.substring(currSquashMessage.indexOf("\n") + 1));
return sb.toString();
}