in src/main/java/com/googlesource/gerrit/plugins/download/command/GitDownloadCommand.java [100:129]
private String resolveRef(String project, String ref) {
if (project.startsWith("$") || ref.startsWith("$")) {
// No real value but placeholders are being used.
return ref;
}
try (Repository repo = repoManager.openRepository(Project.nameKey(project))) {
Config cfg = repo.getConfig();
boolean allowSha1InWant =
cfg.getBoolean(UPLOADPACK, KEY_ALLOW_TIP_SHA1_IN_WANT, false)
|| cfg.getBoolean(UPLOADPACK, KEY_ALLOW_REACHABLE_SHA1_IN_WANT, false);
if (allowSha1InWant
&& Arrays.asList(cfg.getStringList(UPLOADPACK, null, KEY_HIDE_REFS))
.contains(RefNames.REFS_CHANGES)) {
ObjectId id = repo.resolve(ref);
if (id != null) {
return id.name();
}
logger.atSevere().log("Cannot resolve ref %s in project %s", ref, project);
return null;
}
return ref;
} catch (RepositoryNotFoundException e) {
logger.atSevere().withCause(e).log("Missing project: %s", project);
return null;
} catch (IOException e) {
logger.atSevere().withCause(e).log("Failed to lookup project %s from cache", project);
return null;
}
}