Ensure any new reviewers for updated changes see it in their dashboard
If a change is updated with a new patch set the caller may have given us additional reviewers to include on that change. Those should be added to the change just like if the change was new, so that those individuals can see the change in their dashboard. Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
@@ -635,8 +635,11 @@ class Receive extends AbstractGitCommand {
|
|||||||
|
|
||||||
boolean haveAuthor = false;
|
boolean haveAuthor = false;
|
||||||
boolean haveCommitter = false;
|
boolean haveCommitter = false;
|
||||||
Set<ApprovalCategory.Id> have = new HashSet<ApprovalCategory.Id>();
|
final Set<Account.Id> haveApprovals = new HashSet<Account.Id>();
|
||||||
|
final Set<ApprovalCategory.Id> myApprovals =
|
||||||
|
new HashSet<ApprovalCategory.Id>();
|
||||||
for (ChangeApproval a : db.changeApprovals().byChange(change.getId())) {
|
for (ChangeApproval a : db.changeApprovals().byChange(change.getId())) {
|
||||||
|
haveApprovals.add(a.getAccountId());
|
||||||
if (!haveAuthor && authorId != null
|
if (!haveAuthor && authorId != null
|
||||||
&& a.getAccountId().equals(authorId)) {
|
&& a.getAccountId().equals(authorId)) {
|
||||||
haveAuthor = true;
|
haveAuthor = true;
|
||||||
@@ -649,23 +652,25 @@ class Receive extends AbstractGitCommand {
|
|||||||
if (me.equals(a.getAccountId())) {
|
if (me.equals(a.getAccountId())) {
|
||||||
// Leave my own approvals alone.
|
// Leave my own approvals alone.
|
||||||
//
|
//
|
||||||
have.add(a.getCategoryId());
|
myApprovals.add(a.getCategoryId());
|
||||||
|
|
||||||
} else if (a.getValue() > 0) {
|
} else if (a.getValue() > 0) {
|
||||||
a.clear();
|
a.clear();
|
||||||
db.changeApprovals().update(Collections.singleton(a), txn);
|
db.changeApprovals().update(Collections.singleton(a), txn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<ApprovalType> allTypes =
|
final List<ApprovalType> allTypes =
|
||||||
Common.getGerritConfig().getApprovalTypes();
|
Common.getGerritConfig().getApprovalTypes();
|
||||||
for (final ApprovalType t : allTypes) {
|
for (final ApprovalType t : allTypes) {
|
||||||
final ApprovalCategoryValue max = t.getMax();
|
final ApprovalCategoryValue max = t.getMax();
|
||||||
final ApprovalCategory.Id catId = t.getCategory().getId();
|
final ApprovalCategory.Id catId = t.getCategory().getId();
|
||||||
if (!have.contains(catId) && max != null) {
|
if (!myApprovals.contains(catId) && max != null) {
|
||||||
// Insert any approval I haven't earlier recorded, using the
|
// Insert any approval I haven't earlier recorded, using the
|
||||||
// absolute maximum value, ignoring permissions. It truncates
|
// absolute maximum value, ignoring permissions. It truncates
|
||||||
// at display time and when the issue is closed.
|
// at display time and when the issue is closed.
|
||||||
//
|
//
|
||||||
|
haveApprovals.add(me);
|
||||||
db.changeApprovals().insert(
|
db.changeApprovals().insert(
|
||||||
Collections.singleton(new ChangeApproval(
|
Collections.singleton(new ChangeApproval(
|
||||||
new ChangeApproval.Key(change.getId(), me, catId), max
|
new ChangeApproval.Key(change.getId(), me, catId), max
|
||||||
@@ -675,18 +680,26 @@ class Receive extends AbstractGitCommand {
|
|||||||
if (allTypes.size() > 0) {
|
if (allTypes.size() > 0) {
|
||||||
final ApprovalCategory.Id catId =
|
final ApprovalCategory.Id catId =
|
||||||
allTypes.get(allTypes.size() - 1).getCategory().getId();
|
allTypes.get(allTypes.size() - 1).getCategory().getId();
|
||||||
if (!haveAuthor && authorId != null && !me.equals(authorId)) {
|
if (authorId != null && haveApprovals.add(authorId)) {
|
||||||
db.changeApprovals().insert(
|
db.changeApprovals().insert(
|
||||||
Collections.singleton(new ChangeApproval(
|
Collections.singleton(new ChangeApproval(
|
||||||
new ChangeApproval.Key(change.getId(), authorId, catId),
|
new ChangeApproval.Key(change.getId(), authorId, catId),
|
||||||
(short) 0)), txn);
|
(short) 0)), txn);
|
||||||
}
|
}
|
||||||
if (!haveCommitter && committerId != null && !me.equals(committerId)) {
|
if (committerId != null && haveApprovals.add(committerId)) {
|
||||||
db.changeApprovals().insert(
|
db.changeApprovals().insert(
|
||||||
Collections.singleton(new ChangeApproval(
|
Collections.singleton(new ChangeApproval(
|
||||||
new ChangeApproval.Key(change.getId(), committerId, catId),
|
new ChangeApproval.Key(change.getId(), committerId, catId),
|
||||||
(short) 0)), txn);
|
(short) 0)), txn);
|
||||||
}
|
}
|
||||||
|
for (final Account.Id reviewer : reviewerId) {
|
||||||
|
if (haveApprovals.add(reviewer)) {
|
||||||
|
db.changeApprovals().insert(
|
||||||
|
Collections.singleton(new ChangeApproval(
|
||||||
|
new ChangeApproval.Key(change.getId(), reviewer, catId),
|
||||||
|
(short) 0)), txn);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final ChangeMessage msg =
|
final ChangeMessage msg =
|
||||||
|
|||||||
Reference in New Issue
Block a user