Merge branch 'stable-2.14' * stable-2.14: RefUpdate: Protect against null ObjectId in ReceiveCommand Change-Id: I8de8b32fda1ed25b2c1014e4b40dca1bae841dae
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java index 3953bf6..0eb9b6f 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/AgreementSignup.java
@@ -21,7 +21,7 @@ @Singleton class AgreementSignup implements AgreementSignupListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -40,7 +40,7 @@ args.add("--user-id", submitter._accountId); args.add("--cla-name", event.getAgreementName()); - hook.submit(args); + hook.execute(args); } } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java index c581642..4e74ece 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/AsynchronousHook.java
@@ -16,7 +16,7 @@ import java.nio.file.Path; -public class AsynchronousHook extends Hook { +class AsynchronousHook extends Hook { private final HookQueue queue; AsynchronousHook(HookQueue queue, Path path) { @@ -24,11 +24,15 @@ this.queue = queue; } - void submit(HookArgs args) { + @Override + HookResult execute(HookArgs args) { queue.submit(path, args); + return null; } - void submit(String projectName, HookArgs args) { + @Override + HookResult execute(String projectName, HookArgs args) { queue.submit(projectName, path, args); + return null; } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java index 19e6753..20ace66 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeAbandoned.java
@@ -21,7 +21,7 @@ @Singleton class ChangeAbandoned implements ChangeAbandonedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -45,6 +45,6 @@ args.add("--commit", c.currentRevision); args.add("--reason", event.getReason()); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java index 6e28143..6ef03e0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeMerged.java
@@ -21,7 +21,7 @@ @Singleton class ChangeMerged implements ChangeMergedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -45,6 +45,6 @@ args.add("--commit", c.currentRevision); args.add("--newrev", event.getNewRevisionId()); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java index af0f9a8..27b1c07 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ChangeRestored.java
@@ -21,7 +21,7 @@ @Singleton class ChangeRestored implements ChangeRestoredListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -45,6 +45,6 @@ args.add("--commit", c.currentRevision); args.add("--reason", event.getReason()); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java index cea65d1..531f0ce 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommentAdded.java
@@ -21,7 +21,7 @@ @Singleton class CommentAdded implements CommentAddedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -47,6 +47,6 @@ args.add("--comment", event.getComment()); args.addApprovals(event.getApprovals(), event.getOldApprovals()); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java index 02800fc..73b5ff5 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/CommitReceived.java
@@ -25,7 +25,7 @@ import org.eclipse.jgit.lib.ObjectId; public class CommitReceived implements CommitValidationListener { - private final SynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -49,11 +49,12 @@ args.add("--project", projectName); args.add("--refname", refname); args.add("--uploader", receiveEvent.user.getNameEmail()); + args.add("--uploader-username", receiveEvent.user.getUserName()); args.add("--oldrev", old.name()); args.add("--newrev", receiveEvent.commit.name()); args.add("--cmdref", commandRef); - HookResult result = hook.run(projectName, args); + HookResult result = hook.execute(projectName, args); if (result != null) { String output = result.toString(); if (result.getExitValue() != 0) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java index 7ae68f2..8fe8cde 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/DraftPublished.java
@@ -21,7 +21,7 @@ @Singleton class DraftPublished implements DraftPublishedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -45,6 +45,6 @@ args.add("--commit", event.getRevision().commit.commit); args.add("--patchset", event.getRevision()._number); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java index cf1a10d..07fff1e 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/GitReferenceUpdated.java
@@ -20,7 +20,7 @@ @Singleton class GitReferenceUpdated implements GitReferenceUpdatedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -39,6 +39,6 @@ args.add("--project", event.getProjectName()); args.add("--submitter", event.getUpdater()); - hook.submit(event.getProjectName(), args); + hook.execute(event.getProjectName(), args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java index 9bb40c1..7735b38 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HashtagsEdited.java
@@ -22,7 +22,7 @@ @Singleton class HashtagsEdited implements HashtagsEditedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -45,7 +45,7 @@ add(args, "--added", event.getAddedHashtags()); add(args, "--removed", event.getRemovedHashtags()); - hook.submit(c.project, args); + hook.execute(c.project, args); } private void add(HookArgs args, String name, Collection<String> hashtags) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java index 87fb4f4..fc84b9e 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/Hook.java
@@ -14,12 +14,17 @@ package com.googlesource.gerrit.plugins.hooks; +import com.google.gerrit.common.Nullable; import java.nio.file.Path; -public class Hook { +abstract class Hook { protected final Path path; Hook(Path path) { this.path = path; } + + abstract @Nullable HookResult execute(HookArgs args); + + abstract @Nullable HookResult execute(String projectName, HookArgs args); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java index 5379239..e3febaa 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java
@@ -25,12 +25,17 @@ import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.config.SitePaths; import com.google.gerrit.server.git.GitRepositoryManager; +import com.google.inject.Inject; import com.google.inject.Provider; import java.util.ArrayList; import java.util.List; import java.util.Map; class HookArgs { + interface Factory { + HookArgs create(); + } + final IdentifiedUser.GenericFactory identifiedUserFactory; final Provider<String> urlProvider; final HookMetrics metrics; @@ -39,6 +44,7 @@ private final List<String> args; + @Inject HookArgs( IdentifiedUser.GenericFactory identifiedUserFactory, Provider<String> urlProvider, @@ -82,6 +88,8 @@ if (account != null) { args.add(name); args.add(format(account)); + + add(name + "-username", account.username); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java index 2969358..c3ca6e1 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookFactory.java
@@ -16,14 +16,9 @@ import static com.google.common.base.MoreObjects.firstNonNull; -import com.google.gerrit.common.Nullable; -import com.google.gerrit.server.IdentifiedUser; -import com.google.gerrit.server.config.CanonicalWebUrl; import com.google.gerrit.server.config.GerritServerConfig; import com.google.gerrit.server.config.SitePaths; -import com.google.gerrit.server.git.GitRepositoryManager; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; import java.nio.file.Path; import java.nio.file.Paths; @@ -34,31 +29,20 @@ private final HookQueue queue; private final HookExecutor syncHookExecutor; private final Config config; - private final IdentifiedUser.GenericFactory identifiedUserFactory; - private final HookMetrics metrics; - private final Provider<String> urlProvider; private final Path hooksPath; - private final GitRepositoryManager gitManager; - private final SitePaths sitePaths; + private final HookArgs.Factory argsFactory; @Inject HookFactory( HookQueue queue, HookExecutor syncHookExecutor, @GerritServerConfig Config config, - IdentifiedUser.GenericFactory identifiedUserFactory, - @CanonicalWebUrl @Nullable Provider<String> urlProvider, - HookMetrics metrics, SitePaths sitePaths, - GitRepositoryManager gitManager) { + HookArgs.Factory argsFactory) { this.queue = queue; this.syncHookExecutor = syncHookExecutor; this.config = config; - this.identifiedUserFactory = identifiedUserFactory; - this.metrics = metrics; - this.urlProvider = urlProvider; - this.gitManager = gitManager; - this.sitePaths = sitePaths; + this.argsFactory = argsFactory; String v = config.getString("hooks", null, "path"); if (v != null) { @@ -73,15 +57,15 @@ return hooksPath.resolve(firstNonNull(v, defaultName)); } - public AsynchronousHook createAsync(String configName, String defaultName) { + public Hook createAsync(String configName, String defaultName) { return new AsynchronousHook(queue, getHookPath(configName, defaultName)); } - public SynchronousHook createSync(String configName, String defaultName) { + public Hook createSync(String configName, String defaultName) { return new SynchronousHook(syncHookExecutor, getHookPath(configName, defaultName)); } public HookArgs createArgs() { - return new HookArgs(identifiedUserFactory, urlProvider, metrics, gitManager, sitePaths); + return argsFactory.create(); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java index 6a5e33e..bc7e5eb 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
@@ -19,11 +19,12 @@ import com.google.inject.Inject; import java.nio.file.Files; import java.nio.file.Path; +import java.util.concurrent.ScheduledExecutorService; class HookQueue implements LifecycleListener { private final WorkQueue workQueue; - private WorkQueue.Executor queue; + private ScheduledExecutorService queue; @Inject HookQueue(WorkQueue queue) { @@ -48,7 +49,6 @@ @Override public void stop() { if (queue != null) { - queue.unregisterWorkQueue(); queue.shutdownNow(); queue = null; }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/Module.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/Module.java index 2dcce56..427d15b 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/Module.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/Module.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.hooks; +import com.google.gerrit.extensions.config.FactoryModule; import com.google.gerrit.extensions.events.AgreementSignupListener; import com.google.gerrit.extensions.events.ChangeAbandonedListener; import com.google.gerrit.extensions.events.ChangeMergedListener; @@ -31,11 +32,10 @@ import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.server.git.validators.CommitValidationListener; import com.google.gerrit.server.git.validators.RefOperationValidationListener; -import com.google.inject.AbstractModule; import com.google.inject.Scopes; import com.google.inject.internal.UniqueAnnotations; -class Module extends AbstractModule { +class Module extends FactoryModule { @Override protected void configure() { bind(HookQueue.class).in(Scopes.SINGLETON); @@ -43,6 +43,8 @@ bind(HookExecutor.class).in(Scopes.SINGLETON); bind(LifecycleListener.class).annotatedWith(UniqueAnnotations.create()).to(HookExecutor.class); + factory(HookArgs.Factory.class); + DynamicSet.bind(binder(), AgreementSignupListener.class).to(AgreementSignup.class); DynamicSet.bind(binder(), ChangeAbandonedListener.class).to(ChangeAbandoned.class); DynamicSet.bind(binder(), ChangeMergedListener.class).to(ChangeMerged.class);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java index 5ff73f7..0cf0e88 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/NewProjectCreated.java
@@ -20,7 +20,7 @@ @Singleton class NewProjectCreated implements NewProjectCreatedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -34,6 +34,6 @@ HookArgs args = hookFactory.createArgs(); args.add("--project", event.getProjectName()); args.add("--head", event.getHeadName()); - hook.submit(event.getProjectName(), args); + hook.execute(event.getProjectName(), args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java index d9b38e4..5840874 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/RefUpdate.java
@@ -26,7 +26,7 @@ import org.eclipse.jgit.lib.ObjectId; public class RefUpdate implements RefOperationValidationListener { - private final SynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -47,11 +47,12 @@ HookArgs args = hookFactory.createArgs(); args.add("--project", projectName); args.add("--uploader", refEvent.user.getNameEmail()); + args.add("--uploader-username", refEvent.user.getUserName()); args.add("--oldrev", getObjectId(refEvent.command.getOldId()).getName()); args.add("--newrev", getObjectId(refEvent.command.getNewId()).getName()); args.add("--refname", refEvent.command.getRefName()); - HookResult result = hook.run(projectName, args); + HookResult result = hook.execute(projectName, args); if (result != null) { String output = result.toString(); if (result.getExitValue() != 0) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java index fca527d..9929255 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerAdded.java
@@ -22,7 +22,7 @@ @Singleton class ReviewerAdded implements ReviewerAddedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -44,7 +44,7 @@ args.add("--branch", c.branch); args.add("--reviewer", reviewer); - hook.submit(c.project, args); + hook.execute(c.project, args); } } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java index e23677d..0cf6ce7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/ReviewerDeleted.java
@@ -21,7 +21,7 @@ @Singleton class ReviewerDeleted implements ReviewerDeletedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -43,6 +43,6 @@ args.add("--reviewer", event.getReviewer()); args.addApprovals(event.getNewApprovals(), event.getOldApprovals()); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java index cd4a9d1..ebf5a7b 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/RevisionCreated.java
@@ -21,7 +21,7 @@ @Singleton public class RevisionCreated implements RevisionCreatedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -47,6 +47,6 @@ args.add("--commit", event.getRevision().commit.commit); args.add("--patchset", event.getRevision()._number); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java index 03cbc40..d4dfaf8 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/SynchronousHook.java
@@ -24,11 +24,13 @@ this.executor = executor; } - HookResult run(HookArgs args) { + @Override + HookResult execute(HookArgs args) { return executor.submit(path, args); } - HookResult run(String projectName, HookArgs args) { + @Override + HookResult execute(String projectName, HookArgs args) { return executor.submit(projectName, path, args); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java index e608694..62407dd 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/TopicEdited.java
@@ -21,7 +21,7 @@ @Singleton class TopicEdited implements TopicEditedListener { - private final AsynchronousHook hook; + private final Hook hook; private final HookFactory hookFactory; @Inject @@ -43,6 +43,6 @@ args.add("--old-topic", event.getOldTopic()); args.add("--new-topic", event.getChange().topic); - hook.submit(c.project, args); + hook.execute(c.project, args); } }
diff --git a/src/main/resources/Documentation/hooks.md b/src/main/resources/Documentation/hooks.md index 1fcb0c9..0787fb3 100644 --- a/src/main/resources/Documentation/hooks.md +++ b/src/main/resources/Documentation/hooks.md
@@ -15,7 +15,7 @@ up server threads. See [`hooks.syncHookTimeout`][1] for configuration details. ``` - ref-update --project <project name> --refname <refname> --uploader <uploader> --oldrev <sha1> --newrev <sha1> + ref-update --project <project name> --refname <refname> --uploader <uploader> --uploader-username <username> --oldrev <sha1> --newrev <sha1> ``` commit-received @@ -31,7 +31,7 @@ up server threads. See [`hooks.syncHookTimeout`][1] for configuration details. ``` - commit-received --project <project name> --refname <refname> --uploader <uploader> --oldrev <sha1> --newrev <sha1> --cmdref <refname> + commit-received --project <project name> --refname <refname> --uploader <uploader> --uploader-username <username> --oldrev <sha1> --newrev <sha1> --cmdref <refname> ``` patchset-created @@ -40,7 +40,7 @@ Called whenever a patchset is created (this includes new changes and drafts). ``` - patchset-created --change <change id> --is-draft <boolean> --kind <change kind> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --commit <sha1> --patchset <patchset id> + patchset-created --change <change id> --is-draft <boolean> --kind <change kind> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --uploader-username <username> --commit <sha1> --patchset <patchset id> ``` The `--kind` parameter represents the kind of change uploaded. See documentation @@ -52,7 +52,7 @@ Called whenever a draft change is published. ``` - draft-published --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --commit <sha1> --patchset <patchset id> + draft-published --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --uploader-username <username> --commit <sha1> --patchset <patchset id> ``` comment-added @@ -61,7 +61,7 @@ Called whenever a comment is added to a change. ``` - comment-added --change <change id> --is-draft <boolean> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --author <comment author> --commit <commit> --comment <comment> [--<approval category id> <score> --<approval category id> <score> --<approval category id>-oldValue <score> ...] + comment-added --change <change id> --is-draft <boolean> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --author <comment author> --author-username <username> --commit <commit> --comment <comment> [--<approval category id> <score> --<approval category id> <score> --<approval category id>-oldValue <score> ...] ``` change-merged @@ -70,7 +70,7 @@ Called whenever a change has been merged. ``` - change-merged --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --commit <sha1> --newrev <sha1> + change-merged --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --submitter-username <username> --commit <sha1> --newrev <sha1> ``` change-abandoned @@ -79,7 +79,7 @@ Called whenever a change has been abandoned. ``` - change-abandoned --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --abandoner <abandoner> --commit <sha1> --reason <reason> + change-abandoned --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --abandoner <abandoner> --abandoner-username <username> --commit <sha1> --reason <reason> ``` change-restored @@ -88,7 +88,7 @@ Called whenever a change has been restored. ``` - change-restored --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --restorer <restorer> --commit <sha1> --reason <reason> + change-restored --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --restorer <restorer> --restorer-username <username> --commit <sha1> --reason <reason> ``` ref-updated @@ -97,7 +97,7 @@ Called whenever a ref has been updated. ``` - ref-updated --oldrev <old rev> --newrev <new rev> --refname <ref name> --project <project name> --submitter <submitter> + ref-updated --oldrev <old rev> --newrev <new rev> --refname <ref name> --project <project name> --submitter <submitter> --submitter-username <username> ``` project-created @@ -115,7 +115,7 @@ Called whenever a reviewer is added to a change. ``` - reviewer-added --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --reviewer <reviewer> + reviewer-added --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --reviewer <reviewer> --reviewer-username <username> ``` reviewer-deleted @@ -124,7 +124,7 @@ Called whenever a reviewer (with a vote) is removed from a change. ``` - reviewer-deleted --change <change id> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --reviewer <reviewer> [--<approval category id> <score> --<approval category id> <score> ...] + reviewer-deleted --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --reviewer <reviewer> [--<approval category id> <score> --<approval category id> <score> ...] ``` topic-changed @@ -133,7 +133,7 @@ Called whenever a change's topic is changed from the Web UI or via the REST API. ``` - topic-changed --change <change id> --change-owner <change owner> --project <project name> --branch <branch> --changer <changer> --old-topic <old topic> --new-topic <new topic> + topic-changed --change <change id> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --changer <changer> --changer-username <username> --old-topic <old topic> --new-topic <new topic> ``` hashtags-changed @@ -143,7 +143,7 @@ or via the REST API. ``` - hashtags-changed --change <change id> --change-owner <change owner> --project <project name> --branch <branch> --editor <editor> --added <hashtag> --removed <hashtag> --hashtag <hashtag> + hashtags-changed --change <change id> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --editor <editor> --editor-username <username> --added <hashtag> --removed <hashtag> --hashtag <hashtag> ``` The `--added` parameter may be passed multiple times, once for each