* Update plugins/hooks from branch 'master'
- Refactor to pass injected instances through HookArgs
Instead of injecting the SitePath and GitRepositoryManager in all the
places they're used, inject them only in HookFactory and pass them
around through HookArgs.
Make objects package visible in HookArgs so that they can be accessed
directly rather than through getter methods.
Change-Id: I0cee06e4928748e7dba0315653def894d27244de
* submodules:
* Update plugins/reviewnotes from branch 'master'
- Assign unused Future return value to a variable
Error Prone plans to make this pattern into a compile error; this avoids
future breakage.
Change-Id: I6a023f22f472941854a6729f6450b9b70a020069
* submodules:
* Update plugins/hooks from branch 'master'
- Format all Java files with google-java-format
Change-Id: Ic726e55d416c3ceda674111b20fdc985c857c245
* Update plugins/reviewnotes from branch 'master'
- Format all Java files with google-java-format
Change-Id: I05b6a2e93015e8a5a5e93cf64ad15b710e86b5c9
* Update plugins/commit-message-length-validator from branch 'master'
- Format all Java files with google-java-format
Change-Id: Ibc2af6488f1b117ba3f94613309c8c69f1ed6dc1
* Update plugins/cookbook-plugin from branch 'master'
- Format all Java files with google-java-format
Change-Id: Id46240f027c75888265c1f878df52817cd50ec8a
* Update plugins/replication from branch 'master'
- Merge "Format all Java files with google-java-format"
- Format all Java files with google-java-format
Change-Id: I7884ab98ed1d2baa1776b2bb032ce338e8f88bc9
* Update plugins/singleusergroup from branch 'master'
- Format all Java files with google-java-format
Change-Id: I504a6177f9fded8bee1a8d6d3a7ab4f983d63853
* Update plugins/download-commands from branch 'master'
- Format all Java files with google-java-format
Change-Id: Iec0368bf90d394e0a98662e535ac082ad45f3bbb
* Update plugins/replication from branch 'master'
- Merge branch 'stable-2.13'
* stable-2.13:
ReplicationMetrics: Make members private final
Change-Id: Icf7dd3f5c9dd518c8984546aba9708525a428f79
- ReplicationMetrics: Make members private final
These members should only be accessed through the public methods:
- start(...), to create/start a new timer context
- record(...), to record the retry/delay values
Mark the members as private final to prevent unintended access.
Change-Id: I69a7e3b13ba4c344f3176528306163ebef07653c
When building a Gerrit plugin in-tree, allow to add extra dependencies
to the WORKSPACE file.
The only operation required will be the overwrite of the
plugins/external_plugin_deps.bzl file with the one provided by the
plugin.
Bug: Issue 5305
Change-Id: I07e4538f9f81ef923a4ca1aeceaee75d8429434e
* Update plugins/singleusergroup from branch 'master'
- Actually remove Buck based build
Accidentaly, the wrong file was removed. It was supposed to remove BUCK
and not BUILD.
This partially reverts commit 6800d41177013999c7259b387314d812cb51bcce.
Change-Id: Ia131c160a614b7d6dae242def0ace2203dde1230
Guava team recommends MultimapBuilder over specific Multimap
implementations, so callers don't have to know the specific key/value
behaviors of the individual implementations. The static factory
methods in the implementations will be removed in a later version.
LinkedListMultimap and LinkedHashMultimap are not affected, since
MultimapBuilder lacks support for specifying linked entries, and thus
the factory methods are not in immediate danger of deletion.
Change-Id: I7744db687da84a7beae31d1cb8953e782ed23c1d
Guava team recommends using the subinterfaces of Multimap, for the
same reasons they recommend using Set and List rather than Collection:
it documents expectations about ordering, uniqueness, and behavior of
equals. Do this across the board in Gerrit.
Mostly this is straightforward and I tried to exactly match existing
behavior where possible. However, there were a few wrinkles, where
different callers passed different subtypes to the same method.
The main one is arguments to ParameterParser#parse and
splitQueryString, where some callers used SetMultimaps (perhaps
semi-intentionally, or perhaps misunderstanding the nature of
HashMultimap). For the purposes of parameter parsing, a ListMultimap
makes more sense, because it preserves argument order and repetition.
Another instance is a couple places in ReceiveCommits and downstream
where there were SetMultimap<?, Ref>. Since Refs do not implement
equals, this is effectively the same thing as a ListMultimap, and
changing the interface no longer misleads readers into thinking there
might be some deduplication happening.
Finally, this change includes a breaking API change to the return
type of ExternalIncludedIn#getIncludedIn.
Change-Id: I5f1d15e27a32e534a6aaefe204e7a31815f4c8d7
The account data is moved from ReviewDb into git.
Change-Id: I643827179b24601b138f394cfff5890f919b9da9
Signed-off-by: Edwin Kempin <ekempin@google.com>
* changes:
Only generate SSH test keys if we run SSH tests
Add @UseSsh Annotation and GERRIT_USE_SSH flag
* submodules:
* Update plugins/cookbook-plugin from branch 'master'
- Add @UseSsh to CookbookIT
Change-Id: I5245a09a0dd3593db6d80fab260369044692cd7a
* Update plugins/cookbook-plugin from branch 'master'
- Bazel: Increase time limit for tests to 300 seconds
20 seconds (small size) doesn't seem to be enough on the CI: [1].
[1] https://gerrit-ci.gerritforge.com/job/Gerrit-verifier/1526/consoleText
Change-Id: I41dd945f425510c49603dafb3c2835a5ad9453d7
* Update plugins/cookbook-plugin from branch 'master'
- Merge branch 'stable-2.13'
* stable-2.13:
HelloWebLink: Make the dummy image more visible
Change-Id: I5291aabcf3c57f76fe17c65a770c09fe80022412
- HelloWebLink: Make the dummy image more visible
Change-Id: If2b80d5fd2f719ebd1db4c9b15f5c8e50f5cda3f
Short circuit the plugin loading phase from the unit tests by passing
the module names from the manifest file.
This allows us to avoid building and deploying the plugin JAR from
within build tool chain.
To use the simplified plugin bootstrap tests, plugin test class must
be inherited from the LightweightPluginDaemonTest class and must be
annotated with @TestPlugin annotation:
@TestPlugin(
name = "cookbook",
sysModule = "com.googlesource.gerrit.plugins.cookbook.Module",
httpModule = "com.googlesource.gerrit.plugins.cookbook.HttpModule",
sshModule = "com.googlesource.gerrit.plugins.cookbook.SshModule"
)
public class CookbookIT extends LightweightPluginDaemonTest {
@Test
public void revisionTest() throws Exception {
createChange();
RestResponse response =
adminRestSession.post("/changes/1/revisions/1/cookbook~hello-revision");
assertThat(response.getEntityContent())
.contains("Hello admin from change 1, patch set 1!");
}
}
Inspired-By: Dave Borowitz <dborowitz@google.com>
Change-Id: I689bb71413ecfbbf99f72730b0d2617bf526d9dd
* submodules:
* Update plugins/replication from branch 'master'
- Remove test prefix from test methods in replication plugin
We previously used 'test' to prefix tests but have decided to stop this.
This change removes the prefix from all test code.
Change-Id: I42e6191ece7872f4647e425e3ca0acf8c6452412
Reformat the Bazel build files with the buildifier tool [1].
The style is different for Bazel files. Most notably, indentation level
is 4 spaces instead of 2, and " is used instead of '.
[1] https://github.com/bazelbuild/buildifier
Change-Id: I95c0c6f11b6d76572797853b4ebb5cee5ebd3c98
* Update plugins/replication from branch 'master'
- Add ReplicationScheduledEvent to indicate ref replication is scheduled.
Assure that event is posted only once each time a ref is scheduled.
Covers the corner case when the ref is added to already scheduled push.
Change-Id: I175940f8d4c6b9164c41bbec8c52d221ec30001b
Signed-off-by: Eryk Szymanski <eryksz@gmail.com>
* Update plugins/cookbook-plugin from branch 'master'
- Bazel: Run plugin tests non-hermetically
The plugin tests required the plugin to be built and installed to the
test site (controlled by the test), so that this implementation is by
design non hermeticized so we can't run in the sandbox.
Change-Id: I39b981aaa4c6063f34e97db59a34b6a0f238e28b
* Update plugins/cookbook-plugin from branch 'master'
- Implement bazel build
Tests are still failing as acceptance test framework wasn't migrated
to Bazel yet.
Change-Id: I4f48925df31a9a79da631b0a9ccd2b724a674270
* Update plugins/download-commands from branch 'master'
- Merge branch 'stable-2.13'
* stable-2.13:
CloneWithCommitMsgHook: Fix HTTP clone command inconsistency
Change-Id: I97fafb4e6972d5f11e3dddfd69ad0711d0c0bf7f
- Merge branch 'stable-2.12' into stable-2.13
* stable-2.12:
CloneWithCommitMsgHook: Fix HTTP clone command inconsistency
Change-Id: I8a86b8cc56834933391afd56fc93d4ece67a4401
- CloneWithCommitMsgHook: Fix HTTP clone command inconsistency
When cloning a project using HTTP schema, the "/a" in the URL was added
only when choosing to clone without the commit hook. Now the URL is the
same in both cases.
Change-Id: I8fc0667f17cea592bd702a0441cba7ca3f762968
(cherry picked from commit d632d6471b42a47877664a5266ba509026538a32)
TEST PLAN:
$ bazel build release
Install bazel-bin/release.war and verify that the versions of the
core plugins are reported correctly:
commit-message-length-validator: v2.13.1-2-g76b911
download-commands: v2.13.2-5-gd632d64
hooks: v2.13.2-7-gf27c7e7
replication: v2.13.2-17-g531ed1
reviewnotes: v2.13.1-7-g45f6975
Change-Id: Iaceeeb1daafd7455c8d8a3673682d1ab9e65d8ef
* Update plugins/download-commands from branch 'master'
- CloneWithCommitMsgHook: Fix HTTP clone command inconsistency
When cloning a project using HTTP schema, the "/a" in the URL was added
only when choosing to clone without the commit hook. Now the URL is the
same in both cases.
Change-Id: I8fc0667f17cea592bd702a0441cba7ca3f762968
* Update plugins/replication from branch 'master'
- Fix Bazel build with testonly attribute set
Replication plugin tests depend on //gerrit-acceptance-framework:lib
which is flagged with testonly attribute.
For Bazel, all the dependencies in the tree need to have the testonly
set consistently.
Change-Id: I0eb3f6c3f2123b66b98b8c8060badc9bbaa88dd6
* Update plugins/replication from branch 'master'
- Create Destination using Guice Factory
Destination classes were instantiated in ReplicationFileBasedConfig
which required to have all Destination dependencies injected in
ReplicationFileBasedConfig.
Create Destination using a new DestinationFactory to stop having to
pass dependencies from one class to another.
Also-By: David Pursehouse <dpursehouse@collab.net>
Change-Id: If4d9bc5266837b8fec261decfbd1e651c4cb0f51
- ReplicationFileBasedConfig: Replace FluentIterable with streams/lambda
Change-Id: I85356369f245a45aaef6db20655ac18750cb3400
* Update plugins/hooks from branch 'master'
- Merge branch 'stable-2.13'
* stable-2.13:
Add project name to commit received hook
Always return the output from ref-update hook
Change-Id: Id86c2c7acf94e2a7b2e1a3e3af7c3637b054f65f
- Add project name to commit received hook
This also implicates that GIT_DIR and the working directory is correctly
set for the ref-update hook.
Bug: Issue 4841
Change-Id: I48141d316cacdd649f6e56ea48d689d06940fbf5
- Always return the output from ref-update hook
Change I5905c44c7 moved the invocation of the ref-update hook out of
the ReceiveCommits implementation and into CommitValidators. Since
then, the output of the ref-update hook is not sent back to the git
client except in the case of an error or rejection.
Update the handling of the ref-update hook in the plugin so that its
output is returned back to the caller as a commit validation message
which is then sent to the client.
Change-Id: I88af8a3c690cc226214208c3c93f552f054ccae0
Reported-By: Robert Niemi <robert.den.klurige@googlemail.com>
* Update plugins/cookbook-plugin from branch 'master'
- Get rid of dependency on Guava
Since I789f9aa589 removed usage of Guava's Optional, we only have
the dependency on Guava for the following simple utility methods:
Strings.isNullOrEmpty
MoreObjects.firstNonNull
Remove the dependency and instead provide own implementations
of those methods.
Change-Id: Iddcc20005004d37dae703fc0522c546a5212575c
* submodules:
* Update plugins/replication from branch 'master'
- Remove usage of deprecated Throwables methods
The propagate and propagateIfPossible methods are deprecated in
Guava 20. Replace them with the recommended alternatives.
Change-Id: I8aacba415a15655850c9d2e7ba8bd207db930460
* Update plugins/replication from branch 'master'
- Merge branch 'stable-2.13'
* stable-2.13:
Make SearchingChangeCacheImpl nullable when replicating from slave
Change-Id: I0d23a61100350239432d8eeb701483afe0625fb6
- Make SearchingChangeCacheImpl nullable when replicating from slave
SearchingChangeCacheImpl should be nullable in slave mode.
Change-Id: If22407565f44e7ed201e57d7d3b7b9a51f20b5bc
* Update plugins/hooks from branch 'master'
- Merge branch 'stable-2.13'
* stable-2.13:
Add --change-url with correct value
Change-Id: I6bf2b4c547d206190ff32702c2eeb1b942f1b377
- Add --change-url with correct value
Create the URL with the change-id rather than the change number.
Change-Id: I7fb753fec0bc776c593062e3e44f48dd9004b085
* Update plugins/replication from branch 'master'
- Removed the recommendation for ssh
As discussed many times during the Gerrit conferences and hackathons,
Git/SSH replication on Gerrit isn't stable enough due to the JSch
client stack. Removing the recommendation from the documentation
may help in choosing alternative methods.
Change-Id: I3c8646135999d6cbb99b58d83d42655d25ea23e9
* Update plugins/replication from branch 'master'
- Remove dependencies exported in the plugin API
Change-Id: I3f0b3d33a8819e6489629b34706c72b4ab3d3f1c