in src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java [481:520]
public static String getRepoFile(
PermissionBackend permissionBackend,
Map<String, String> readFiles,
GitRepositoryManager repoManager,
Repository repository,
ObjectId id,
String project,
String branch,
String file,
List<String> logs) {
// 'file' must be an absolute path from the root of 'project'.
logs.add("getRepoFile:" + Parser.getFileKey(project, branch, file));
file = Util.gitRepoFilePath(file);
String content = findReadFile(readFiles, project, file);
if (content == null) {
if (!hasReadAccess(permissionBackend, project, branch, logs)) {
logger.atSevere().log("getRepoFile cannot read %s:%s", project, file);
return ""; // treat as read error
}
content = "";
if ((id == null || repository == null) && repoManager != null) {
// create ObjectId from repoManager
try (Repository repo = repoManager.openRepository(Project.nameKey(project))) {
id = repo.resolve(branch);
if (id != null) {
content = getFile(repo, id, file, logs);
} else {
logs.add("getRepoFile not found branch " + branch);
}
} catch (Exception e) {
logger.atSevere().log("getRepoFile failed to find repository of project %s", project);
logException(logs, "getRepoFile", e);
}
} else if (id != null && repository != null) {
content = getFile(repository, id, file, logs);
}
saveReadFile(readFiles, project, file, content);
}
return content;
}