TestRepository: Allow setting explicit Change-Id
This includes both leaving existing Change-Ids alone (as, for example Gerrit's commit-msg hook does) and programmatically setting a value. Change-Id: Iaaffb0107ae27de24df1f0e95a8d628fb8ea5364
This commit is contained in:
parent
6ed07f5cb5
commit
8b6f9ace15
|
@ -875,7 +875,7 @@ public class CommitBuilder {
|
||||||
private PersonIdent author;
|
private PersonIdent author;
|
||||||
private PersonIdent committer;
|
private PersonIdent committer;
|
||||||
|
|
||||||
private boolean insertChangeId;
|
private String changeId;
|
||||||
|
|
||||||
private boolean updateCommitterTime;
|
private boolean updateCommitterTime;
|
||||||
|
|
||||||
|
@ -1002,7 +1002,14 @@ public PersonIdent committer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommitBuilder insertChangeId() {
|
public CommitBuilder insertChangeId() {
|
||||||
insertChangeId = true;
|
changeId = "";
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommitBuilder insertChangeId(String c) {
|
||||||
|
// Validate, but store as a string so we can use "" as a sentinel.
|
||||||
|
ObjectId.fromString(c);
|
||||||
|
changeId = c;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1029,8 +1036,7 @@ public RevCommit create() throws Exception {
|
||||||
c.setTreeId(topLevelTree);
|
c.setTreeId(topLevelTree);
|
||||||
else
|
else
|
||||||
c.setTreeId(tree.writeTree(ins));
|
c.setTreeId(tree.writeTree(ins));
|
||||||
if (insertChangeId)
|
insertChangeId(c);
|
||||||
insertChangeId(c);
|
|
||||||
c.setMessage(message);
|
c.setMessage(message);
|
||||||
commitId = ins.insert(c);
|
commitId = ins.insert(c);
|
||||||
ins.flush();
|
ins.flush();
|
||||||
|
@ -1045,6 +1051,8 @@ public RevCommit create() throws Exception {
|
||||||
|
|
||||||
private void insertChangeId(org.eclipse.jgit.lib.CommitBuilder c)
|
private void insertChangeId(org.eclipse.jgit.lib.CommitBuilder c)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
if (changeId == null)
|
||||||
|
return;
|
||||||
int idx = ChangeIdUtil.indexOfChangeId(message, "\n");
|
int idx = ChangeIdUtil.indexOfChangeId(message, "\n");
|
||||||
if (idx >= 0)
|
if (idx >= 0)
|
||||||
return;
|
return;
|
||||||
|
@ -1052,13 +1060,18 @@ private void insertChangeId(org.eclipse.jgit.lib.CommitBuilder c)
|
||||||
ObjectId firstParentId = null;
|
ObjectId firstParentId = null;
|
||||||
if (!parents.isEmpty())
|
if (!parents.isEmpty())
|
||||||
firstParentId = parents.get(0);
|
firstParentId = parents.get(0);
|
||||||
ObjectId changeId = ChangeIdUtil.computeChangeId(c.getTreeId(),
|
|
||||||
firstParentId, c.getAuthor(), c.getCommitter(), message);
|
ObjectId cid;
|
||||||
message = ChangeIdUtil.insertId(message, changeId);
|
if (changeId.equals(""))
|
||||||
if (changeId != null)
|
cid = ChangeIdUtil.computeChangeId(c.getTreeId(), firstParentId,
|
||||||
|
c.getAuthor(), c.getCommitter(), message);
|
||||||
|
else
|
||||||
|
cid = ObjectId.fromString(changeId);
|
||||||
|
message = ChangeIdUtil.insertId(message, cid);
|
||||||
|
if (cid != null)
|
||||||
message = message.replaceAll("\nChange-Id: I" //$NON-NLS-1$
|
message = message.replaceAll("\nChange-Id: I" //$NON-NLS-1$
|
||||||
+ ObjectId.zeroId().getName() + "\n", "\nChange-Id: I" //$NON-NLS-1$ //$NON-NLS-2$
|
+ ObjectId.zeroId().getName() + "\n", "\nChange-Id: I" //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
+ changeId.getName() + "\n"); //$NON-NLS-1$
|
+ cid.getName() + "\n"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommitBuilder child() throws Exception {
|
public CommitBuilder child() throws Exception {
|
||||||
|
|
|
@ -112,6 +112,17 @@ public void insertChangeIdIgnoresExisting() throws Exception {
|
||||||
assertEquals(msg, c.getFullMessage());
|
assertEquals(msg, c.getFullMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void insertExplicitChangeId() throws Exception {
|
||||||
|
RevCommit c = tr.commit().message("message")
|
||||||
|
.insertChangeId("deadbeefdeadbeefdeadbeefdeadbeefdeadbeef")
|
||||||
|
.create();
|
||||||
|
rw.parseBody(c);
|
||||||
|
assertEquals("message\n\n"
|
||||||
|
+ "Change-Id: Ideadbeefdeadbeefdeadbeefdeadbeefdeadbeef\n"
|
||||||
|
, c.getFullMessage());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void resetFromSymref() throws Exception {
|
public void resetFromSymref() throws Exception {
|
||||||
repo.updateRef("HEAD").link("refs/heads/master");
|
repo.updateRef("HEAD").link("refs/heads/master");
|
||||||
|
|
Loading…
Reference in New Issue