aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge changes from topic "fix_ui"Terry Parker2020-09-033-49/+459
|\ | | | | | | | | | | | | | | | | | | * changes: ResolveMerger: do not content-merge gitlinks on del/mod conflicts ResolveMerger: Adding test cases for GITLINK deletion ResolveMerger: choose OURS on gitlink when ignoreConflicts ResolveMerger: improving content merge readability ResolveMerger: extracting createGitLinksMergeResult method ResolveMerger: Adding test cases for GITLINK merge
| * ResolveMerger: do not content-merge gitlinks on del/mod conflictsDemetr Starshov2020-08-262-37/+44
| | | | | | | | | | | | | | | | | | | | Previously ResolveMerger tried to make a fulltext merge entry in case one of sides got deleted regardless of file mode. This is not applicable for GITLINK type of entry. After this change it is rendering appropriate merge result. Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: Ibdb4557bf8781bdb48bcee6529e37dc80582ed7e
| * ResolveMerger: Adding test cases for GITLINK deletionDemetr Starshov2020-08-261-0/+91
| | | | | | | | | | | | | | Add test cases which cover content-merge resolve logic for deletion. Sign-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: I2f2b37e29adc973a5a0cfcc5c8bc32a2c38efdfa
| * ResolveMerger: choose OURS on gitlink when ignoreConflictsDemetr Starshov2020-08-262-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Option ignoreConflicts is used when a caller want to create a virtual commit and use it in a future merge (recursive merge) or show it on UI (e.g. Gerrit). According to contract in case of ignoreConflicts ResolveMerger should populate only stage 0 for entries with merge conflicts as if there is no conflict. Current implementation breaks this contract for cases when gitlink revision is ambiguous. Therefore, always select 'ours' when we merge in ignoreConflicts mode. This will satisfy the contract contract, so recursive merge can succeed, however it is an arbitrary decision, so it is not guaranteed to select best GITLINK in all cases. GITLINK merging is a special case of recursive merge because of limitations of GITLINK type of entry. It can't contain more than 1 sha-1 so jgit can't write merge conflicts in place like it can with a blob. Ideally we could signal the conflict with a special value (like '0000...'), but that must be supported by all tooling (git fsck, c-git)." Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: Id4e9bebc8e828f7a1ef9f83259159137df477d89
| * ResolveMerger: improving content merge readabilityDemetr Starshov2020-08-261-12/+14
| | | | | | | | | | | | | | | | Separate "GITLINK conflict" and "attributes can't be content merged" cases. Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: I29424e13ea1738af750196e7bf4315256a6095b6
| * ResolveMerger: extracting createGitLinksMergeResult methodDemetr Starshov2020-08-261-8/+14
| | | | | | | | | | Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: Ibc8b954266b1b4b9b9f404e3433f0d7cdae107e8
| * ResolveMerger: Adding test cases for GITLINK mergeDemetr Starshov2020-08-262-0/+307
| | | | | | | | | | | | | | | | | | | | | | | | Add test cases which cover content-merge resolve logic. Git clients try to agressively merge blobs by content, but GITLINK types of entries can't be merged with each other or with blobs. This change ensures all possible permutations which can trigger blob and GITLINK content merge are covered. Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: I7e83a28a14d4d2f9e0ba2b1cffbf3224fb7f3fef
* | Merge branch 'stable-5.9'Marco Miller2020-09-0234-123/+235
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.9: Upgrade maven-resources-plugin to 3.2.0 Upgrade plexus-compiler version to 2.8.8 [bazel] Add missing dependency to slf4j-api [errorprone] DirCacheEntry: make clear operator precedence [errorprone] PackWriter#parallelDeltaSearch: avoid suppressed exception [errorprone] Declare DirCache#version final Add jgit-4.17-staging target platform for 2020-09 Update target platform to R20200831200620 Signed-off-by: Marco Miller <marco.miller@ericsson.com> Change-Id: I2e2f41cf6ebbcb45b8978b519db3f1c8f7afb5f4
| * \ Merge changes Ib0b2dc7c,I827da397 into stable-5.9Matthias Sohn2020-09-022-3/+3
| |\ \ | | | | | | | | | | | | | | | | | | | | * changes: Upgrade maven-resources-plugin to 3.2.0 Upgrade plexus-compiler version to 2.8.8
| | * | Upgrade maven-resources-plugin to 3.2.0Marco Miller2020-09-012-2/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: Ib0b2dc7c5b781dbc4ce26782c508b8c7e11641ed Signed-off-by: Marco Miller <marco.miller@ericsson.com>
| | * | Upgrade plexus-compiler version to 2.8.8Marco Miller2020-09-011-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I827da3973f489b03f9321b065dfb96ad7c29e270 Signed-off-by: Marco Miller <marco.miller@ericsson.com>
| * | | [bazel] Add missing dependency to slf4j-apiMatthias Sohn2020-09-012-0/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: I8a6b0cc8892ff4ba83d0f4a0d5801b1de27401f4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | [errorprone] DirCacheEntry: make clear operator precedenceMatthias Sohn2020-09-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | See https://errorprone.info/bugpattern/OperatorPrecedence Change-Id: I96f2c844a7b3d9d5605122118d9420bde31ec2f0 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | [errorprone] PackWriter#parallelDeltaSearch: avoid suppressed exceptionMatthias Sohn2020-09-011-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | See https://errorprone.info/bugpattern/Finally Change-Id: Ic2ad0d1e1ba7552b5a5c6238f83c0e13a94254d0 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | [errorprone] Declare DirCache#version finalMatthias Sohn2020-09-011-1/+1
| |/ / | | | | | | | | | | | | | | | | | | Enums values should be immutable, see https://errorprone.info/bugpattern/ImmutableEnumChecker. Change-Id: Ib0a358d3a5f1560ca73ec3153ca8088fe7a35eb6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Add jgit-4.17-staging target platform for 2020-09Matthias Sohn2020-09-012-0/+102
| | | | | | | | | | | | Change-Id: Ic3d3f7d1a4d13b40426675d29d8c521f1437f845 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Update target platform to R20200831200620Matthias Sohn2020-09-0125-117/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and update to new Orbit version of the following libraries - org.apache.commons.codec to 1.14.0.v20200818-1422 - org.apache.httpcomponents.httpclient to 4.5.10.v20200830-2311 - org.bouncycastle.bcpg [1.65.0.v20200527-1955 - org.bouncycastle.bcpkix [1.65.0.v20200527-1955 - org.bouncycastle.bcprov [1.65.1.v20200529-1514 Fix minor issues in target platforms and rename 4.16-staging to 4.16 since that version was released already. Change-Id: Ifea2600e445e783807a5d94ea23ac3c6550956b5 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Prepare 5.10.0-SNAPSHOT buildsMatthias Sohn2020-08-2788-504/+504
| | | | | | | | | | | | | | | Change-Id: I9a2b39e9e85f27179ceb3b1709d75c466089a3bc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Merge branch 'stable-5.9' into masterMatthias Sohn2020-08-270-0/+0
|\| | | | | | | | | | | | | | | | | | | | | | | * stable-5.9: Prepare 5.9.0-SNAPSHOT builds JGit v5.9.0.202008260805-m3 Change-Id: I2fdd289a14cebea02125711bd47a2cb9ad292b0d
| * | Prepare 5.9.0-SNAPSHOT buildsMatthias Sohn2020-08-2788-121/+121
| | | | | | | | | | | | | | | Change-Id: Ia3e8382ec503150979d8acb6161031ccfb7fd921 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | JGit v5.9.0.202008260805-m3v5.9.0.202008260805-m3Matthias Sohn2020-08-2688-121/+121
|/ / | | | | | | | | Change-Id: Ic4de8340f3ab038e38b239b725b8bd6d6dbee413 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Fix possible NegativeArraySizeException in PackIndexV1Marc Strapetz2020-08-256-3/+35
| | | | | | | | | | | | | | | | | | Due to an integer overflow bug, the current "Index file is too large for jgit" check did not work properly and subsequently a NegativeArraySizeException was raised. Change-Id: I2736efb28987c29e56bc946563b7fa781898a94a Signed-off-by: Marc Strapetz <marc.strapetz@syntevo.com>
* | FS: use binary search to determine filesystem timestamp resolutionThomas Wolf2020-08-233-13/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previous code used a minimum granularity of 1 microsecond and would iterate 233 times on a system where the resolution is 1 second (for instance, Java 8 on Mac APFS). New code uses a binary search between the maximum we care about (2 seconds) and zero, with a minimum granularity of also 1 microsecond. This takes at most 19 iterations (guaranteed). For a file system with 1 second resolution, it takes 4 iterations (1s, 0.5s, 0.8s, 0.9s). With an up-front check at 1 microsecond and at 1 millisecond this performs equally well as the old code on file systems with a fine resolution. (For instance, Java 11 on Mac APFS.) Also handle obscure cases where the file timestamp implementation may yield bogus values (as observed on HP NonStop). If such an error case occurs, log a warning and abort the measurement at the last good value. Bug: 565707 Change-Id: I82a96729b50c284be7c23fbdf3d0df1bddf60e41 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Do not prematurely create directory of jgit's XDG config fileMatthias Sohn2020-08-223-20/+8
| | | | | | | | | | | | | | | | LockFile.lock() will create it anyway when the config file is created. Bug: 565637 Change-Id: I078b89a695193fd76f130f6de7ac1cf26d2f8f0f Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | FS: write to JGit config in a background threadThomas Wolf2020-08-211-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise locking problems may ensue if the JGit config itself is on a different file system. Since the internal is already updated, it is not really important when exactly the value gets persisted. By queueing up separate Runnables executed by a single thread we avoid concurrent write access to the JGit config, and nested calls to getFileStoreAttributes(Path) result in serialized attempts to write. The thread for writing the config must not be a daemon thread. If it were, JVM shutdown might kill it anytime, which may lead to the config not being written, or worse, a config.lock file being left behind. Bug: 566170 Change-Id: I07e3d4c5e029d3cec9ab5895002fc4e0c7948c40 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | FS: don't cache fallback if running in backgroundThomas Wolf2020-08-201-2/+10
| | | | | | | | | | | | | | | | | | | | If the background job is a little late, the true result might arrive and be cached later. So make sure we don't cache the large fallback resolution in the per-directory cache. Otherwise we'd work with the large fallback until the next restart. Bug: 566170 Change-Id: I7354a6cfddfc0c05144bb0aa41c23029bd4f6af0 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Keep line endings for text files committed with CR/LF on text=autoThomas Wolf2020-08-178-183/+448
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Git never converts line endings if the version in the repository is a text file with CR/LF and text=auto. See [1]: "When the file has been committed with CRLF, no conversion is done." Because the sentence just before is about converting line endings on check-in, I had understood that in commit 60cf85a [2] to mean that no conversion on check-in was to be done. However, as bug 565048 and a code inspection of the C git code showed it really means no conversion is done on check-in *or check-out*. If the text attribute is not set but core.autocrlf = true, this is the same as text=auto eol=crlf. C git does not convert on check-out even on text=auto eol=lf if the index version is a text file with CR/LF. For check-in, one has to look at the intended target, which is done in WorkingTreeIterator since commit 60cf85a. For check-out, it can be done by looking at the source and can thus be done in the AutoLFOutputStream. Additionally, provide a constructor for AutoLFInputStream to do the same; for cases where the equivalent of a check-out is done via an input stream obtained from a blob. (EGit does that in its GitBlobStorage for the Eclipse compare framework; it's more efficient than using a TemporaryBuffer and DirCacheCheckout.getContent(), and it avoids the need for a temporary file.) Adapt existing tests, and add new checkout and merge tests to verify the resulting files have the correct line endings. EGit's GitBlobStorage will need to call the new version of EolStreamTypeUtil.wrapInputStream(). [1] https://git-scm.com/docs/gitattributes#Documentation/gitattributes.txt-Settostringvalueauto [2] https://git.eclipse.org/r/c/jgit/jgit/+/127324 Bug: 565048 Change-Id: If1282ef43e2abd00263541bd10a01fe1f5c619fc Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Delay WindowCache statistics JMX MBean registrationThomas Wolf2020-08-161-7/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The WindowCache is configured statically with a default WindowCacheConfig. The default config says (for backwards compatibility reasons) to publish the MBean. As a result, the MBean always gets published. By delaying the MBean registration until the first call to getInstance() or get(PackFile, long) we can avoid the forced registration and do it only if not re-configured in the meantime not to publish the bean. (As is done by Egit, to avoid a very early costly access to the user and system config during plug-in activation.) Bug: 563740 Change-Id: I8a941342c0833acee2107515e64299aada7e0520 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | [releng] Update plexus-compiler to 2.8.7Thomas Wolf2020-08-151-3/+4
| | | | | | | | Change-Id: Idc00c877544af7434c3a71c9ab0b2bd6a2b8fb66 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | DirCache: support index V4Thomas Wolf2020-08-159-62/+552
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Index format version 4 was introduced in C git in 2012. It's about time that JGit can deal with it. Version 4 added prefix path compression. Instead of writing the full path for each index entry to disk, only the difference to the previous entry's path is written: a variable-encoded int telling how many bytes to remove from the previous entry's path to get the common prefix, followed by the new suffix. Also, cache entries in a version 4 index are not padded anymore. Internally, version 3 and version 4 index entries are identical; it's only the stored format that changes. Implement this path compression, and make sure we write an index file that we read previously in the same format. (Only changing from version 2 to version 3 if there are extended flags.) Add support for the "feature.manyFiles" and the "index.version" git configs, and honor them when writing a new index file. Add tests, including a compatibility test that verifies that JGit can read a version 4 index generated by C git and write an identical version 4 index. Bug: 565774 Change-Id: Id83241cf009e50f950eb42f8d56b834fb47da1ed Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Update javadoc for RemoteSession and SshSessionFactoryThomas Wolf2020-08-103-67/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The timeout on RemoteSession.exec() cannot be a timeout for the whole command. It can only be a timeout for setting up the process; after that it's the application's responsibility to implement some timeout for the execution of the command, for instance by calling Process.waitFor(int, TimeUnit) or through other means. Sessions returned by an SshSessionFactory are already connected and authenticated -- they must be, because RemoteSession offers no operations for connecting or authenticating a session. Change the implementation of SshdExecProcess.waitFor() to wait indefinitely. The original implementation used the timeout from RemoteSession.exec() because of that erroneous javadoc. Change-Id: I3c7ede24ab66d4c81f72d178ce5012d383cd826e Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Fix JSchProcess.waitFor() with time-outThomas Wolf2020-08-106-14/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SshSupport.runSshCommand() had a comment that wait with time-out could not be used because JSchProcess.exitValue() threw the wrong unchecked exception when the process was still running. Fix this and make JSchProcess.exitValue() throw the right exception, then wait with a time-out in SshSupport. The Apache sshd client's SshdExecProcess has always used the correct IllegalThreadStateException. Add tests for SshSupport.runCommand(). Change-Id: Id30893174ae8be3b9a16119674049337b0cf4381 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | sshd: work around a race condition in Apache MINA sshd 2.4.0/2.5.xThomas Wolf2020-08-104-6/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When exceptions occur very early in the SSH connection setup, it's possible that an exception gets lost. A subsequent authentication attempt may then never be notified of the failure, and then wait indefinitely or until its timeout expires. This is caused by race conditions in sshd. The issue has been reported upstream as SSHD-1050,[1] but will be fixed at the earliest in sshd 2.6.0. [1] https://issues.apache.org/jira/projects/SSHD/issues/SSHD-1050 Bug: 565394 Change-Id: If9b62839db38f9e59a5e1137c2257039ba82de98 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | sshd: store per-session data on the sshd session objectThomas Wolf2020-08-095-95/+225
| | | | | | | | | | | | | | | | | | | | | | | | Don't store session properties on the client but in a dedicated per-session object that is attached to the sshd session. Also make sure that each sshd session gets its own instance of IdentityPasswordProvider that asks for passphrases of encrypted private keys, and also store it on the session itself. Bug: 563380 Change-Id: Ia88bf9f91cd22b5fd32b5972d8204d60f2de56bf Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Merge changes from topic "sshd"Thomas Wolf2020-08-056-64/+125
|\ \ | |/ |/| | | | | | | * changes: sshd: use PropertyResolver in test Remove dependency on JSch from SSH test framework
| * sshd: use PropertyResolver in testThomas Wolf2020-07-282-8/+9
| | | | | | | | | | | | | | | | | | | | Improve the SshTestGitServer API for accessing the server properties. Instead of returning the raw property map, return the proper sshd API abstraction PropertyResolver. This makes the interface more resilient against upstream changes. Change-Id: Ie5b685bddc4e59f3eb6c121026d3658d57618ca4 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
| * Remove dependency on JSch from SSH test frameworkThomas Wolf2020-07-265-56/+116
| | | | | | | | | | | | | | | | | | | | Use standard java.security to generate test keys, use sshd to write public key files, and write PKCS#8 PEM files for our non-encrypted test private keys. This is a format that both JSch and Apache MINA sshd can read. Change-Id: I6ec55cfd7346b672a7fb6139d51abfb06d81a394 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | FilterSpec: Use BigInteger.ZERO instead of valueOf(0)Jonathan Nieder2020-07-311-1/+2
| | | | | | | | | | | | This just simplifies a bit by avoiding an unneeded method call. Change-Id: I6d8d2fc512d8f8a82da73c355017d0abf833a13b
* | Do not send empty blob in response to blob:none filterJonathan Nieder2020-07-295-16/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If I create a repository containing an empty file and clone it with git clone --no-checkout --filter=blob:none \ https://url/of/repository then I would expect no blobs to be transferred over the wire. Alas, JGit rewrites filter=blob:none to filter=blob:limit=0, so if the repository contains an empty file then the empty blob gets transferred. Fix it by teaching JGit about filters based on object type to complement the existing filters based on object size. This prepares us for other future filters such as object:none. In particular, this means we do not need to look up the size of the filtered blobs, which should speed up clones. Noticed by Anna Pologova and Terry Parker. Change-Id: Id4b234921a190c108d8be2c87f54dcbfa811602a Signed-off-by: Jonathan Nieder <jrn@google.com>
* | Add support for tree filters when fetchingJonathan Nieder2020-07-292-8/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Teach the FilterSpec serialization code about tree filters so they can be communicated over the wire and understood by the server. While we're here, harden the FilterSpec serialization code to throw IllegalStateException if we encounter a FilterSpec that cannot be expressed as a "filter" line. The only public API for creating a Filterspec is to pass in a "filter" line to be parsed, so these should not appear in practice. Change-Id: I9664844059ffbc9c36eb829e2d860f198b9403a0 Signed-off-by: Jonathan Nieder <jrn@google.com>
* | FS_POSIX: avoid prompt to install the XCode tools on OS XThomas Wolf2020-07-262-9/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OS X ships with a default /usr/bin/git that is just a wrapper that at run-time delegates to the selected XCode toolchain, and that prompts the user to install the XCode command line tools if not already installed. This is annoying for people who don't want to do so, since they'll be prompted on each Eclipse start. Also, since on OS X the $PATH for applications started via the GUI is not the same as the $PATH as set via the shell profile, just using /usr/bin/git (which will normally be found when JGit runs inside Eclipse) may give slightly surprising results if the user has installed a non-Apple git and changed his $PATH in the shell such that the non-Apple git is used in the shell. (For instance by placing /usr/local/bin earlier on the path.) Eclipse and the shell will use different git executables, and thus different git system configs. Therefore, try to find git via bash --login -c 'which git' not only if we couldn't find it on $PATH but also if we found the default git /usr/bin/git. If that finds some other git, use that. If the bash approach also finds /usr/bin/git, double check via xcode-select -p that an XCode git is present. If not, assume there is no git installed, and work without any system config. Bug: 564372 Change-Id: Ie9d010ebd9437a491ba5d92b4ffd1860c203f8ca Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Use LinkedBlockingQueue for executor determining filesystem attributesMatthias Sohn2020-07-241-2/+2
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using a fixed thread pool with unbounded LinkedBlockingQueue fixes the RejectedExecutionException thrown if too many threads try to concurrently determine filesystem attributes. Comparing that to an alternative implementation using an unbounded thread pool instead showed similar performance with the reproducer (in range of 100-1000 threads in reproducer) on my mac: threads time fixed threadpool up to 5 threads with LinkedBlockingQueue of unlimited queue size 100 1103 ms 200 1602 ms 300 2369 ms 500 4002 ms 1000 11071 ms unbounded cached threadpool 100 1108 ms 200 1591 ms 300 2299 ms 500 4577 ms 1000 11196 ms Bug: 564202 Change-Id: I773da7414a1dca8e548349442dca9b56643be946 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Bazel: Add workspace status command to stamp final artifactDavid Ostrovsky2020-07-173-1/+68
| | | | | | | | | | | | | | | | | | | Include implementation version in jgit library. This version is used by other products that depend on JGit, and built using Bazel and not consume officially released artifact from Central or Eclipse own Maven repository. Most notably, in Gerrit Code Review JGit agent that was previously reported as "unknown", is now reported as: JGit/v5.8.0.202006091008-r-16-g14c43828d using this change [1]. [1] https://gerrit-review.googlesource.com/c/gerrit/+/272505 Change-Id: Ia50de9ac35b8dbe9e92d8ad7d0d14cd00f057863 Signed-off-by: David Ostrovsky <david@ostrovsky.org>
* DiffFormatter: correctly deal with tracked files in ignored foldersThomas Wolf2020-07-174-8/+92
| | | | | | | | | | | | | | | | | | | | | | | | In JGit 5.0, the FileTreeIterator was changed to skip ignored folders by default. To catch tracked files inside ignored folders, the tree walk needs to have a DirCacheIterator, and the FileTreeIterator has to know about that DirCacheIterator via setDirCacheIterator(). (Or the optimization has to be switched off explicitly via setWalkIgnoredDirectories(true).) Skipping ignored directories is an important optimization in some cases, for instance in node.js/npm projects, where we'd otherwise traverse the whole huge and deep hierarchy of the typically ignored node_modules folder. While all uses of WorkingTreeIterator in JGit had been adapted, DiffFormatter was forgotten. To make it work correctly (again) also for such cases, make it set up a WorkingTreeeIterator automatically, and make sure the WorkingTreeSource can find such files, too. Also pass the repository to the TreeWalks used inside the DiffFormatter to pick up the correct attributes, filters, and line-ending settings. Bug: 565081 Change-Id: Ie88ac81166dc396ba28b83313964c1712b6ca199 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Merge branch 'stable-5.8'Matthias Sohn2020-07-150-0/+0
|\ | | | | | | | | | | | | | | * stable-5.8: Prepare 5.8.2-SNAPSHOT builds JGit v5.8.1.202007141445-r Change-Id: I52960deec1f942b59817e34ea41688c8439a0927 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 5.8.2-SNAPSHOT buildsMatthias Sohn2020-07-1488-503/+503
| | | | | | | | | | Change-Id: I33327417cd5f5b55e860c5d9c6ee06cac7d10b44 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v5.8.1.202007141445-rv5.8.1.202007141445-rMatthias Sohn2020-07-1488-121/+121
| | | | | | | | | | Change-Id: Ib63831292eded15af18ed30a9653831dadfd0d4a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Update Jetty to 9.4.30.v20200611Matthias Sohn2020-07-1413-211/+211
| | | | | | | | Change-Id: I9e14502f290483ad755aac30acd1e256f8abc8f8 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Fix writing GPG signatures with trailing newlineThomas Wolf2020-07-082-45/+65
| | | | | | | | | | | | | | Make sure we don't produce a spurious empty line at the end. Bug: 564428 Change-Id: Ib991d93fbd052baca65d32a7842f07f9ddeb8130 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Rename a test methodThomas Wolf2020-07-041-1/+1
| | | | | | | | Change-Id: Ibb0bf0b1895a07a80a1f73d2fd6df2cb2d09fd77 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>