summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJukka Jokiniva <jukka.jokiniva@qt.io>2023-09-11 16:54:13 +0300
committerJukka Jokiniva <jukka.jokiniva@qt.io>2023-10-10 11:53:41 +0000
commita3851bc1973afc649b9b109a72c4a59d3f8871fe (patch)
tree44c3cae57301991978bc878af1c5d604b47f3412
parent2fab4dcc49e9c541fb247bc61929c7a548af52bd (diff)
Allow checking Stage permission for a refv3.7.4-based
Add stage to the list of ref permissions. This allows check.access REST API calls for staging restrictions in a branch. This is needed by the cherry-pick bot to determine if a branch is "open" or not. Task-number: QTQAINFRA-5822 Change-Id: Ie6c58a5f40a60e811d04d02c870440626e7a329b Reviewed-by: Daniel Smith <Daniel.Smith@qt.io>
-rw-r--r--java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java1
-rw-r--r--java/com/google/gerrit/server/permissions/RefControl.java7
-rw-r--r--java/com/google/gerrit/server/permissions/RefPermission.java4
3 files changed, 11 insertions, 1 deletions
diff --git a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java
index 3ab68d73fd..4d887bb3a8 100644
--- a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java
+++ b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java
@@ -84,6 +84,7 @@ public class DefaultPermissionMappings {
.put(RefPermission.CREATE_TAG, Permission.CREATE_TAG)
.put(RefPermission.CREATE_SIGNED_TAG, Permission.CREATE_SIGNED_TAG)
.put(RefPermission.READ_PRIVATE_CHANGES, Permission.VIEW_PRIVATE_CHANGES)
+ .put(RefPermission.QT_STAGE, Permission.QT_STAGE)
.build();
private static final ImmutableBiMap<ChangePermission, String> CHANGE_PERMISSIONS =
diff --git a/java/com/google/gerrit/server/permissions/RefControl.java b/java/com/google/gerrit/server/permissions/RefControl.java
index 478ba5c582..d75a4729d6 100644
--- a/java/com/google/gerrit/server/permissions/RefControl.java
+++ b/java/com/google/gerrit/server/permissions/RefControl.java
@@ -594,6 +594,10 @@ class RefControl {
case WRITE_CONFIG:
pde.setAdvice("You need 'Write' rights on refs/meta/config.");
break;
+
+ case QT_STAGE:
+ pde.setAdvice("You need 'Stage' rights on " + RefNames.shortName(refName) );
+ break;
}
throw pde;
}
@@ -673,6 +677,9 @@ class RefControl {
&& canForgeCommitter()
&& canForgeGerritServerIdentity()
&& canUploadMerges();
+
+ case QT_STAGE:
+ return canPerform(refPermissionName(perm));
}
throw new PermissionBackendException(perm + " unsupported");
}
diff --git a/java/com/google/gerrit/server/permissions/RefPermission.java b/java/com/google/gerrit/server/permissions/RefPermission.java
index 09eed2421d..d9b865f0ee 100644
--- a/java/com/google/gerrit/server/permissions/RefPermission.java
+++ b/java/com/google/gerrit/server/permissions/RefPermission.java
@@ -72,7 +72,9 @@ public enum RefPermission implements GerritPermission {
READ_CONFIG("read ref config"),
/** Write access to ref's config section in {@code project.config}. */
- WRITE_CONFIG("write ref config");
+ WRITE_CONFIG("write ref config"),
+
+ QT_STAGE;
private final String description;