Merge "Fix CommitCommand to be able to skip writing to RefLog"
This commit is contained in:
commit
eeeca8042f
|
@ -68,6 +68,7 @@
|
||||||
import org.eclipse.jgit.lib.PersonIdent;
|
import org.eclipse.jgit.lib.PersonIdent;
|
||||||
import org.eclipse.jgit.lib.RefUpdate;
|
import org.eclipse.jgit.lib.RefUpdate;
|
||||||
import org.eclipse.jgit.lib.RefUpdate.Result;
|
import org.eclipse.jgit.lib.RefUpdate.Result;
|
||||||
|
import org.eclipse.jgit.lib.ReflogEntry;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
import org.eclipse.jgit.lib.StoredConfig;
|
import org.eclipse.jgit.lib.StoredConfig;
|
||||||
import org.eclipse.jgit.revwalk.RevCommit;
|
import org.eclipse.jgit.revwalk.RevCommit;
|
||||||
|
@ -436,6 +437,36 @@ public void commitAfterSquashMerge() throws Exception {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReflogs() throws Exception {
|
||||||
|
try (Git git = new Git(db)) {
|
||||||
|
writeTrashFile("f", "1");
|
||||||
|
git.add().addFilepattern("f").call();
|
||||||
|
git.commit().setMessage("c1").call();
|
||||||
|
writeTrashFile("f", "2");
|
||||||
|
git.commit().setMessage("c2").setAll(true).setReflogComment(null)
|
||||||
|
.call();
|
||||||
|
writeTrashFile("f", "3");
|
||||||
|
git.commit().setMessage("c3").setAll(true)
|
||||||
|
.setReflogComment("testRl").call();
|
||||||
|
|
||||||
|
db.getReflogReader(Constants.HEAD).getReverseEntries();
|
||||||
|
|
||||||
|
assertEquals("testRl;commit (initial): c1;", reflogComments(
|
||||||
|
db.getReflogReader(Constants.HEAD).getReverseEntries()));
|
||||||
|
assertEquals("testRl;commit (initial): c1;", reflogComments(
|
||||||
|
db.getReflogReader(db.getBranch()).getReverseEntries()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String reflogComments(List<ReflogEntry> entries) {
|
||||||
|
StringBuffer b = new StringBuffer();
|
||||||
|
for (ReflogEntry e : entries) {
|
||||||
|
b.append(e.getComment()).append(";");
|
||||||
|
}
|
||||||
|
return b.toString();
|
||||||
|
}
|
||||||
|
|
||||||
@Test(expected = WrongRepositoryStateException.class)
|
@Test(expected = WrongRepositoryStateException.class)
|
||||||
public void commitAmendOnInitialShouldFail() throws Exception {
|
public void commitAmendOnInitialShouldFail() throws Exception {
|
||||||
try (Git git = new Git(db)) {
|
try (Git git = new Git(db)) {
|
||||||
|
|
|
@ -124,6 +124,8 @@ public class CommitCommand extends GitCommand<RevCommit> {
|
||||||
|
|
||||||
private String reflogComment;
|
private String reflogComment;
|
||||||
|
|
||||||
|
private boolean useDefaultReflogMessage = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting this option bypasses the pre-commit and commit-msg hooks.
|
* Setting this option bypasses the pre-commit and commit-msg hooks.
|
||||||
*/
|
*/
|
||||||
|
@ -258,7 +260,7 @@ public RevCommit call() throws GitAPIException, NoHeadException,
|
||||||
RevCommit revCommit = rw.parseCommit(commitId);
|
RevCommit revCommit = rw.parseCommit(commitId);
|
||||||
RefUpdate ru = repo.updateRef(Constants.HEAD);
|
RefUpdate ru = repo.updateRef(Constants.HEAD);
|
||||||
ru.setNewObjectId(commitId);
|
ru.setNewObjectId(commitId);
|
||||||
if (reflogComment != null) {
|
if (!useDefaultReflogMessage) {
|
||||||
ru.setRefLogMessage(reflogComment, false);
|
ru.setRefLogMessage(reflogComment, false);
|
||||||
} else {
|
} else {
|
||||||
String prefix = amend ? "commit (amend): " //$NON-NLS-1$
|
String prefix = amend ? "commit (amend): " //$NON-NLS-1$
|
||||||
|
@ -790,10 +792,13 @@ public CommitCommand setInsertChangeId(boolean insertChangeId) {
|
||||||
* Override the message written to the reflog
|
* Override the message written to the reflog
|
||||||
*
|
*
|
||||||
* @param reflogComment
|
* @param reflogComment
|
||||||
|
* the comment to be written into the reflog or <code>null</code>
|
||||||
|
* to specify that no reflog should be written
|
||||||
* @return {@code this}
|
* @return {@code this}
|
||||||
*/
|
*/
|
||||||
public CommitCommand setReflogComment(String reflogComment) {
|
public CommitCommand setReflogComment(String reflogComment) {
|
||||||
this.reflogComment = reflogComment;
|
this.reflogComment = reflogComment;
|
||||||
|
useDefaultReflogMessage = false;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue