Always set VisibleRefFilter on UploadPack
There was an optimization to not add VisibleRefFilter if all refs of the project were visible to the calling user, because in this case it is not needed to evaluate all rules. This optimization is unneeded because a similar optimization exists within VisibleRefFilter. VisibleRefFilter checks if all refs except refs/meta/config are visible to the calling user and if yes only one separate permission check for refs/meta/config is done. Removing the optimization for the case where all refs are visible to the calling user makes this case only slightly slower, since there is only one additional permission check for the refs/meta/config branch now. On the other hand the case where a user can see all refs except refs/meta/config is a little faster now, since the check if all refs are visible is removed. By having VisibleRefFilter invoked always, we can now use it to add magic refs to the advertised ref set, which is e.g. required to support a magic refs/users/self ref (implemented in the follow-up change). Change-Id: Ic8f29b41f3abf23f99b59260956d543f815253cc Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -259,11 +259,8 @@ class InProcessProtocol extends TestProtocol<Context> {
|
||||
UploadPack up = new UploadPack(repo);
|
||||
up.setPackConfig(transferConfig.getPackConfig());
|
||||
up.setTimeout(transferConfig.getTimeout());
|
||||
|
||||
if (!ctl.allRefsAreVisible()) {
|
||||
up.setAdvertiseRefsHook(new VisibleRefFilter(
|
||||
tagCache, changeCache, repo, ctl, dbProvider.get(), true));
|
||||
}
|
||||
up.setAdvertiseRefsHook(new VisibleRefFilter(
|
||||
tagCache, changeCache, repo, ctl, dbProvider.get(), true));
|
||||
List<PreUploadHook> hooks = Lists.newArrayList(preUploadHooks);
|
||||
hooks.add(uploadValidatorsFactory.create(
|
||||
ctl.getProject(), repo, "localhost-test"));
|
||||
|
||||
Reference in New Issue
Block a user