Adapt UploadArchiveIT to account for the extra directory entry added
in the archive by ArchiveCommand since [1].
[1] https://git.eclipse.org/r/#/c/98478/
Change-Id: I12bff3bbea7493085fbe7d9bac428c90b07926be
This is a snapshot of the latest head of JGit's master branch.
Jetty was changed to version 9.3.17.v20170317. This version change
will be done for Gerrit in a follow-up commit.
Change-Id: I19ca866f90b16260f72fdd9cdc97683031b48488
This snapshot includes numerous changes since the previous one.
There is currently nothing that we specifically need in this snapshot,
but it brings us closer to what will be in the upcoming 4.7.0 release
and will allow us to potentially catch any issues before release.
Change-Id: I4c3642eab4c1f1128e2e19cf656dee13270662e2
Put all the logic in jgit.bzl, where a single edit suffices to get
the local flavor.
Given that all sha1 for jgit dependencies are in jgit.bzl, we can
remove the constants and use sha1 values directly.
Change-Id: Icabf651e02f226e5c025457d54588074a11ae283
Now that Bazel build for JGit is fully implemented, we can document
the process of routing the JGit dependency to the development tree
instead of consuming it from Central or ~/.m2 local repository:
1. Activate local jgit repository in WORKSPACE file:
local_repository(
name = "jgit",
path = "/home/<user>/projects/jgit",
)
2. Uncomment alias to jgit repository in lib/jgit/**/BUILD files.
It shouldn't be needed and is tracked under this issue upstream: [1]:
alias(
name = "jgit-alias",
actual = select({
"@//lib:jgit-dev": "@jgit//org.eclipse.jgit:jgit",
"//conditions:default": "@jgit_lib//jar",
}),
visibility = ["//visibility:public"],
)
Test plan:
Update local JGit tree, run tests and verify that local JGit tree
modifications are relfected in gerrit build:
$ bazel build --define jgit-dev=1 headless
To consume JGit from Central, do not pass jgit-dev=1:
$ bazel test ...
[1] https://github.com/bazelbuild/bazel/issues/2707
Change-Id: I1b0fee7df802f6cbd54acbb0bc73157e2b8bc7cf
Move the definitions of the JGit repository and the artifact hashes into
the lib/jgit/jgit.bzl file so that when we change the JGit version we can
make all the necessary modifications in one place.
Change-Id: I4cb97481d62a57bfca960392d696aae3c95c6bb7
This snapshot includes several fixes since the release, including some
improvements in LFS support:
d3148f300 Make ObjectDownloadListener public
55c629a9f LfsProtocolServlet#LfsRequest: Add operation type helper methods
56fe21778 Expose LFS operation strings as public constants
590141163 LfsProtocolServlet: Improve error on getLargeFileRepository failure
7245aa031 Add support for refusing LFS request due to invalid authorization
0e187f148 Add LfsPointerFilter TreeFilter
Change-Id: Ib3cd9d8677b6c6017becc5c46e7fa4dfc5192807
Change-Id: Ibd58603e6c1975c883dbf9f1d115e03a25467774
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Signed-off-by: David Pursehouse <dpursehouse@collab.net>
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
JavaEWAH was upgraded in JGit in [1], which is included in the snapshot
build of JGit being used in Gerrit since change Ic7c646b32.
Upgrade to use the same version.
[1] https://git.eclipse.org/r/#/c/77604/
Change-Id: I5de4cdbdf816296d97640bb83130544ec85685af
Adds support for MonotonicClock, which Gerrit can use
inside of ReviewDb and NoteDb to maintain timestamps.
Change-Id: Ic7c646b32644c1d1b1e93eeb50a3bf153e85d3c3
Includes {get,set}GitwebDescription on Repository,
which can replace methods in GitRepositoryManager.
Change-Id: Ie25a49864c770e1cfb065dfc9e7c1e8faa97b03c
Fixes the error:
Unable to load package for '//lib/jgit:jgit.bzl':
BUILD file not found on package path.
Change-Id: Ic3506f8777fc1875f00e295bd1775c774b56ef19
This snapshot includes the following changes since the previous:
abeaafc Don't log error if system git config does not exist
c711361 Add missing dependency to slf4j-log4j bridge
a4508f9 Rename FSJava7Test to FSTest
5a4dcce Improve JavaDoc for LfsProtocolServlet.getLargeFileRepository
The plan is to release Gerrit 2.13 with JGit 4.5 so this upgrade is to
release 2.13-rc1 with a JGit version that is closer to what will be JGit
4.5.
Change-Id: I75cf16a19abc5401f75be64efe72aa6013bd53b9
This snapshot includes the following changes since the previous:
b67df51 CLI: implement option -d for deleting tags
34673f0 Added a clean command.
d52bf2e Add specific exception for LFS unavailable
ac85672 Add Javadoc for LFS exception messages
3100662 ReceivePack: integrate push option parsing into recvCommands
2fd4559 ReceivePack: simplify getPushOptions
8e00a31 ReceivePack: allow push options to be set
Change-Id: I266d9663e32bd854a55c14ef8f7c2b427bf2c842
This snapshot includes the following commits since the previous:
dd2a5a7 Make GC.RepoStatistics static
c2e2326 ReceivePack: refactor push option parsing
36cf4fe Fix push option initalization on HTTP
9ae7d49 DfsReader: check object type during open
1227165 Clarify the semantics of DfsRefDatabase#compareAndPut
649ad06 NoteMapTest: Add missing @Test annotations
2d4d644 Add a RepeatRule to help repeating flaky tests
3e27fb3 Do not fake a SymbolicRef as an ObjectIdRef
ffbe03a LfsProtocolServlet: Add support for insufficient storage error
9974f30 Packet logging for JGit
609de52 push: Do not use push options unless requested
20d3f83 Fix HttpClientConnection leaking temporary buffer files
edd8ad4 Use FS#lastModified instead of File#lastModified
da9eef8 Don't check lastModified, length on folders for submodules
b8260b5 Added Java 7 launch config with LANG env. variable set
c4e209b Add HTTP status code to ServiceMayNotContinueException
Change-Id: Ieb219e82899ec606f4ef90317883c09bb8a0133d
This snapshot includes the following commits since the previous:
1096652 LfsProtocolServlet: Add support for rate limit and bandwidth limit errors
de89b7d LfsProtocolServlet: Always include message in error response
0a86b03 LfsRepository{NotFound,ReadOnly}: Externalize message strings
2fc1ceb DownloadTest: Use enums from org.apache.http.HttpStatus
108bee1 Ignore IOException thrown from close
f15e9c0 DfsObjDatabase: clear PackList dirty bit if no new packs
13f0db2 Enhance ResetCommand to allow disabling reflog update
Change-Id: I6590a62f3e1d839a8d36a4b933771d195cbe7650
This snapshot inludes the following fixes since the previous:
- LfsProtocolServlet: Always set the Content-Type header on response
- LfsProtocolServlet: Don't set pretty printing on Gson
- BaseReceivePack: null and IllegalStateException cases for getPushOptions
Change-Id: I7115335bf342df11fd6376d887d13f8e7aa7d91f
This snapshot includes the following changes in LfsProtocolServlet
that are needed by the LFS plugin:
- Allow getLargeFileRepository to raise exceptions
- Allow access to objects in request
- Reuse existing Writer when sending error response
Change-Id: Ic1bba1d7387b1f5a9d6121e750208a9d2a1dae2f
This snapshot includes the following improvements related to LFS:
- Include error message in response body
- Pass request and path to getLargeFileRepository
- Return HTTP 422 instead of 400
and the following other changes that are needed in Gerrit:
- RefSpec: allow construction of weird wildcarded RefSpecs
- RefSpec: reject refs ending in '/'
- BatchRefUpdate: Include command message in toString()
- DiffFormatter: Support setting a reader without a repo
Change-Id: I42eb72603c47e05cf39079164653defa96cf37c4
To run the tests:
bazel test //...
To build the Gerrit plugin API, run:
bazel build gerrit-plugin-api:plugin-api_deploy.jar
To build the Gerrit extension API, run:
bazel build gerrit-extension-api:extension-api_deploy.jar
TODOs:
Licenses
Reduce visibility (all public for now)
Generate HTML Documentation
Core plugins
gerrit_plugin() rule to build plugins in tree and standalone modes
GWT UI (only gwt_module() skylark rule is provided, no gwt_binary())
PolyGerrit UI
WAR
Publish artifacts to Maven Central
Ask Bazel team to add Gerrit to their CI on ci.bazel.io
Contributed-By: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I9a86e670882a44a5c966579cdeb8ed79b1590de3
This is a recent snapshot built off JGit's master branch, including
the fixes that went into 4.1.2.201602141800-r which we have already
upgraded to on stable-2.12.
Change-Id: I9cb311906957f4cbc00e0d168abfe512c070dca1
I39f2d5d7 isolated jgit in its own cell, that is based on this JGit
Buck build implementation: [1]. Migration was done seamlessly, meant
that single BUCK file in lib/jgit represents JGit cell root location.
However, the real structure of JGit project is divided to number of
different sub-projects. To map between simplified JGit cell in gerrit
and real JGit project structure in JGit project, java_library() rules
were added to root BUCK file in JGit project that work like proxy to
real rules located in JGit sub-projects. For example //:jgit in JGit
tree was implemented as:
java_library(
name = 'jgit',
exported_deps = ['//org.eclipse.jgit:jgit'],
visibility = ['PUBLIC'],
)
Such proxies are needed for every artifact that is referenced from
gerrit build and make Buck build implementation unnecessary verbose.
Moreover this introduced some subtle issues, like using JGit
dependencies in context of java_doc rules, where $(location :foo) macro
is unable to resolve the underlying files because java_library with
exported dependencies only do not have association with output file.
An attempt to replace java_library with only exported dependenies with
prebuilt_jar: [2] that depends on the real artifact introduced another
problem with assembly of gerrit.war, because now jgit.jar is twice in
the classpath (because prebuilt_jar has output file association). To
fix this we would need to filter potential duplicates in the assembly
process of gerrit.war.
Instead of using proxy approach and to try to provide yet another
workaround to subtle problems, emulate the JGit project structure and
reference directly the same artifacts paths within gerrit JGit cell
in gerrit build:
deps = [
'@jgit//org.eclipse.jgit:jgit',
],
This simplifies JGit Buck build implementation, as we wouldn't need to
proxy all artifacts referenced from gerrit build from the root build
file. And this would fix all remaining issues.
This approach make gerrit build slightly more verbose. JGit upgrade
process would need to touch 4 files instead of only one. But given that
the Gerrit/JGit development integration is important feature, we would
like to support (as this integration attempt shows: [3]) in our build
toolchain, this overhead is justified.
With this change, the root build file in JGit project can be stripped:
[4].
[1] https://git.eclipse.org/r/61938
[2] https://git.eclipse.org/r/66547
[3] https://gerrit-review.googlesource.com/61892
[4] https://git.eclipse.org/r/66562
Change-Id: I2d278f80d0fedc4c5e9943804873f57145877dfe
Consume JGit as first third party library from its own cell. Normally
the cell is defined as lib/jgit directory. It can be easily replaced
with CLI:
buck build --config repositories.jgit=path/to/dev/jgit gerrit
or tweaking the .buckconfig:
[repositories]
jgit = path/to/dev/jgit
The former approach is sufficient to build and run the test from the
CLI, the latter is needed to generate eclipse project.
To isolate the JGit rules in its own cell some refactoring was needed.
JGit patch for GWT module was moved to gerrit-patch-jgit project, and
some symlinks were needed for maven machinery to work. include_defs()
doesn't work for now across cell boundaries, and native `buck fetch`
feature still has some limitations: [1]. Moreover, excluding paths,
unsigning JARs and license linking should be re-implemented on top
of it.
[1] https://github.com/facebook/buck/issues/602
Test Plan:
Normal gerrit build and the build with hijacked JGit cell should work
in both standalone (gerrit.war) and Eclipse environment. Note, that
to test --config repositories.jgit=path/to/dev/jgit use case, the most
recent JGit tree must be used, that contains Buck driven build
implementation.
Change-Id: I39f2d5d75bbac88804406d6242b5e714f4916926
This includes a new method on Repository, so our subclass needs to be
updated.
Also requires disabling atomic updates on InMemoryRepositoryMangers
used by acceptance tests, since a bug in the atomic implementation
causes BanCommitIT to fail:
FAILURE com.google.gerrit.acceptance.rest.project.BanCommitIT banCommit: Not true that null reference starts with <"contains banned commit">
java.lang.AssertionError: Not true that null reference starts with <"contains banned commit">
at com.google.common.truth.FailureStrategy.fail(FailureStrategy.java:24)
at com.google.common.truth.FailureStrategy.fail(FailureStrategy.java:20)
at com.google.common.truth.Subject.failWithRawMessage(Subject.java:381)
at com.google.common.truth.StringSubject.startsWith(StringSubject.java:167)
at com.google.gerrit.acceptance.rest.project.BanCommitIT.banCommit(BanCommitIT.java:49)
This is because ReceiveCommits rejects the command but still executes
the batch, and the relevant part of InMemoryRepository doesn't ensure
updates are NOT_ATTEMPTED before trying to apply them.
Change-Id: Icd2485c51723119c897406806e2f6e086831df3e
This release fixes the bug
https://bugs.eclipse.org/bugs/show_bug.cgi?id=478865
"exactRef behaves differently in InMemoryRepository when HEAD is linked
to a non-existent ref"
Change-Id: Iced94eeec58f51b981821d55c65b5c1a2ad26db4
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Includes Jacob Keller's fix to show submodule differences properly[1].
See the full release notes[2] for further details.
v2.12-rc0~528^2 (Use exactRef() when possible, 2015-06-20) changed the
expectation in ListBranchesIt#listBranchesOfEmptyProject to work
around a bug in exactRef where it would treat a symref pointing to an
unknown branch as missing. That bug has been fixed in both ref
database backends in JGit:
in DfsRepository, d0e47a99 (2015-07-16)
in FileRepository, 797f94d3 (2015-11-11)
(more details at https://bugs.eclipse.org/478865). So add HEAD back
to the expected list of branches.
[1] https://git.eclipse.org/r/#/c/56263/
[2] https://projects.eclipse.org/projects/technology.jgit/releases/4.1.0
Change-Id: I97f3be172de8cdd8ecf6a3eacb037d4a6332b50f
Includes the fix in 4.0.1.201506240215-r.65 release that was already
merged on stable-2.11:
6b65adc Add a grace period for packfiles during GC
Change-Id: I53692783e3f78931417e6b37af34f3aefadeb1f7
This should only appear in the server deps.
For UI code build //lib/jgit:edit_lib which
has only the tiny slice of code used in the UI.
Change-Id: Ia46c0559a7180f80fda30efb8884ca236997c92d
This JGit version includes the bugfix [1] which is an attempt to fix the
"Cannot read project" issue in Gerrit, as discussed in [2] and [3].
This version of JGit also removes the 'release()' method in many
interfaces/classes in favor or the implementing the AutoCloseable
interface. In stable-2.10 we just replace all usages of the release()
method with the close() method. Refactoring the code to make use of the
AutoCloseable in stable-2.10 would be a larger change which wouldn't
justify itself as we don't expect any major development in stable-2.10
and the usage of AutoCloseable in the master branch is already done.
[1] https://git.eclipse.org/r/48288
[2] https://groups.google.com/forum/#!topic/repo-discuss/ZeGWPyyJlrM
[3] https://groups.google.com/forum/#!topic/repo-discuss/CYYoHfDxCfA
Change-Id: Ie540296238e3bbaf453c9e29426825431e15d423
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
18c4ccd2c3 changed JGit version from the 3.7.0.201502260915-r.58-g65c379e
to the 3.7.1.201504261725-r. However, except for the one new commit
which the 3.7.1.201504261725-r brought, this was effectively a JGit
downgrade.
We need to upgrade JGit to a version which contains the fix
for the [1] and is a successor of the snapshot version
3.7.0.201502260915-r.58-g65c379e which was used in the 2.10.3.1.
[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=465509
Change-Id: I7b5f21700c6cda20b000e1e55266015f081b66bf