ReceiveCommitsAdvertiseRefsHook: Request change field

We requested only the patch set field in I198c7b9c, based on only the
patch set field being used in the body of advertiseOpenChanges.
Unfortunately, the change field is also implicitly required in order
to check visibility in ChangeIsVisibleToPredicate#match.

Change-Id: I177109ed9cdb29724bbe3a9f08eae1a4a8cd716f
This commit is contained in:
Dave Borowitz
2016-10-21 17:07:00 -04:00
parent 85c9b30f75
commit e92ab4bf16

View File

@@ -109,13 +109,20 @@ public class ReceiveCommitsAdvertiseRefsHook implements AdvertiseRefsHook {
r, advertiseOpenChanges(allPatchSets));
}
private static final ImmutableSet<String> OPEN_CHANGES_FIELDS =
ImmutableSet.of(
// Required for ChangeIsVisibleToPrdicate.
ChangeField.CHANGE.getName(),
// Required during advertiseOpenChanges.
ChangeField.PATCH_SET.getName());
private Set<ObjectId> advertiseOpenChanges(Set<ObjectId> allPatchSets) {
// Advertise some recent open changes, in case a commit is based on one.
int limit = 32;
try {
Set<ObjectId> r = Sets.newHashSetWithExpectedSize(limit);
for (ChangeData cd : queryProvider.get()
.setRequestedFields(ImmutableSet.of(ChangeField.PATCH_SET.getName()))
.setRequestedFields(OPEN_CHANGES_FIELDS)
.enforceVisibility(true)
.setLimit(limit)
.byProjectOpen(projectName)) {