Create change ref from ChangeInserter

Reduce some duplicated code. However, there are still a few special
snowflakes, so leave a flag to turn this off:
 - ReceiveCommits manages its own BatchRefUpdate. (It also doesn't
   even use PatchSetInserter for the new patch set case.)
 - ReviewProjectAccess updates the ref using VersionedMetaData, which
   I'm not going to touch for now.

Change-Id: I6f4f9fb8a6364627a737698d1001ad29ce8a981a
This commit is contained in:
Dave Borowitz
2015-10-08 13:26:37 -04:00
parent fd22122b25
commit 9f22f40286
6 changed files with 37 additions and 63 deletions

View File

@@ -276,26 +276,13 @@ public class ChangeUtil {
ChangeInserter ins = changeInserterFactory.create(
git, revWalk, refControl.getProjectControl(), change, revertCommit)
.setValidatePolicy(CommitValidators.Policy.GERRIT);
ins.validate();
PatchSet ps = ins.getPatchSet();
RefUpdate ru = git.updateRef(ps.getRefName());
ru.setExpectedOldObjectId(ObjectId.zeroId());
ru.setNewObjectId(revertCommit);
ru.disableRefLog();
if (ru.update(revWalk) != RefUpdate.Result.NEW) {
throw new IOException(String.format(
"Failed to create ref %s in %s: %s", ps.getRefName(),
change.getDest().getParentKey().get(), ru.getResult()));
}
StringBuilder msgBuf = new StringBuilder();
msgBuf.append("Patch Set ").append(patchSetId.get()).append(": Reverted");
msgBuf.append("\n\n");
msgBuf.append("This patchset was reverted in change: ")
.append(change.getKey().get());
ins.setMessage(msgBuf.toString()).insert();
ins.setMessage(msgBuf.toString())
.insert();
try {
RevertedSender cm = revertedSenderFactory.create(change.getId());