canReadCommit: move check for READ on refs/* on top
This should improve performance for those users who have READ access on refs/*. Since this check is much cheaper than walking potentially large commit graphs, move it to the top of the method. Only when user doesn't have READ on refs/* do the usual reachability check from all readable branches and tags. Change-Id: I48341112347c1c4708c4b6b94c3326da6de8d8fb
This commit is contained in:
@@ -490,6 +490,10 @@ public class ProjectControl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean canReadCommit(RevWalk rw, RevCommit commit) {
|
public boolean canReadCommit(RevWalk rw, RevCommit commit) {
|
||||||
|
if (controlForRef("refs/*").canPerform(Permission.READ)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Project.NameKey projName = state.getProject().getNameKey();
|
Project.NameKey projName = state.getProject().getNameKey();
|
||||||
try {
|
try {
|
||||||
Repository repo = repoManager.openRepository(projName);
|
Repository repo = repoManager.openRepository(projName);
|
||||||
@@ -521,6 +525,6 @@ public class ProjectControl {
|
|||||||
commit.name(), projName.get());
|
commit.name(), projName.get());
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
}
|
}
|
||||||
return controlForRef("refs/*").canPerform(Permission.READ);
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user