in src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java [169:210]
private void replayChange(RevWalk rw, ChangeInfo c)
throws IOException, OrmException, NoSuchAccountException, NoSuchChangeException,
RestApiException, IllegalArgumentException, UpdateException, ConfigInvalidException,
PatchListNotAvailableException {
Change change = resume ? findChange(c) : null;
boolean resumeChange;
if (change == null) {
resumeChange = false;
change = createChange(c);
} else {
resumeChange = true;
if (!force && change.getLastUpdatedOn().equals(c.updated)) {
// change was not modified since last import
return;
}
}
if (c.revisions.isEmpty()) {
log.warn(String.format("Change %s has no revisions.", c.id));
return;
}
replayRevisionsFactory.create(repo, rw, change, c).replay(api);
upsertChange(resumeChange, change, c);
replayInlineCommentsFactory.create(change, c, api, resumeChange).replay();
replayMessagesFactory.create(change, c, resumeChange).replay(api);
addApprovalsFactory.create(change, c, resume).add(api);
if (isNoteDbEnabled) {
addHashtagsFactory.create(change, c, resumeChange).add();
}
insertLinkToOriginalFactory.create(fromGerrit, change, c, resumeChange).insert();
indexer.index(db, change);
if (resumeChange) {
importStatistic.numChangesUpdated++;
} else {
importStatistic.numChangesCreated++;
}
}