in java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java [401:437]
private void updateForConfig(ConfigEntry c, String refName)
throws ConfigInvalidException, IOException, GitAPIException {
SubModuleUpdater subModuleUpdater;
switch (c.getToolType()) {
case Repo:
subModuleUpdater = new RepoUpdater(serverIdent.get());
break;
case Jiri:
subModuleUpdater = new JiriUpdater(serverIdent.get(), canonicalWebUrl, downloadScheme);
break;
default:
throw new ConfigInvalidException(
String.format("invalid toolType: %s", c.getToolType().name()));
}
String status = "NOT_ATTEMPTED";
try (GerritRemoteReader reader =
new GerritRemoteReader(repoManagerFactory.create(c), canonicalWebUrl.toString());
Timer1.Context<ConfigEntry.ToolType> ignored = superprojectCommitTimer.start(c.toolType)) {
subModuleUpdater.update(reader, c, refName);
status = "OK";
} catch (ConcurrentRefUpdateException e) {
status = "LOCK_FAILURE";
throw e;
} catch (ConfigInvalidException e) {
status = "INVALID_SUBMODULE_CONFIGURATION";
throw e;
} catch (GitAPIException e) {
status = "INTERNAL";
throw e;
} catch (IOException e) {
status = "IO_ERROR";
throw e;
} finally {
manifestUpdateResultCounter.increment(status);
}
}