]> source.dussan.org Git - jgit.git/log
jgit.git
2 years agoJGit v6.0.0.202111291000-r 57/188257/1 v6.0.0.202111291000-r
Matthias Sohn [Mon, 29 Nov 2021 15:10:14 +0000 (16:10 +0100)]
JGit v6.0.0.202111291000-r

Change-Id: I6441d9226e8131552bfafe1fb2c353f2e07e42ac
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2 years agoDon't block in GC#gc until garbage collection finished 08/188208/3
Matthias Sohn [Fri, 26 Nov 2021 23:16:34 +0000 (00:16 +0100)]
Don't block in GC#gc until garbage collection finished

Let GC#gc return collection of newly created packs as CompletableFuture
to enable using gc() asynchronously.

Change-Id: I3627014fd458c738cfe54225e631d6f7d9cfb1a7

2 years agoMerge branch 'stable-5.13' into stable-6.0 21/188221/1
Matthias Sohn [Sun, 28 Nov 2021 11:05:46 +0000 (12:05 +0100)]
Merge branch 'stable-5.13' into stable-6.0

* stable-5.13:
  FS: debug logging only if system config file cannot be found

Change-Id: I4759e8ce2c26db74959a16b4129534e419ba988e

2 years agoMerge branch 'stable-5.12' into stable-5.13 20/188220/1
Matthias Sohn [Sun, 28 Nov 2021 11:04:55 +0000 (12:04 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  FS: debug logging only if system config file cannot be found

Change-Id: I4f6fd422e15361118134c4d1534507e0bd81a172

2 years agoMerge branch 'stable-5.11' into stable-5.12 19/188219/1
Matthias Sohn [Sun, 28 Nov 2021 11:04:15 +0000 (12:04 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  FS: debug logging only if system config file cannot be found

Change-Id: Ib32079d58900328f9fc7c91648a1eee9c2bccba5

2 years agoMerge branch 'stable-5.10' into stable-5.11 18/188218/1
Matthias Sohn [Sun, 28 Nov 2021 11:02:45 +0000 (12:02 +0100)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  FS: debug logging only if system config file cannot be found

Change-Id: Icd52afc3a74e0d2618181f62515d7e2a8d6c9739

2 years agoMerge branch 'stable-5.9' into stable-5.10 17/188217/1
Matthias Sohn [Sun, 28 Nov 2021 11:02:03 +0000 (12:02 +0100)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  FS: debug logging only if system config file cannot be found

Change-Id: Ib9eb4f4cc44ecc1958c9b6455ab7865913f8b247

2 years agoFS: debug logging only if system config file cannot be found 16/188216/1
Thomas Wolf [Sun, 28 Nov 2021 10:42:20 +0000 (11:42 +0100)]
FS: debug logging only if system config file cannot be found

The command 'git config --system --show-origin --list -z' fails if
the system config doesn't exist. Use debug logging instead of a
warning for failures of that command. Typically the user cannot do
anything about it anyway, and JGit will just work without system
config.

Bug: 577492
Change-Id: If628ab376182183aea57a385c169e144d371bbb2
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoFS: debug logging only if system config file cannot be found 15/188215/1
Thomas Wolf [Sun, 28 Nov 2021 10:42:20 +0000 (11:42 +0100)]
FS: debug logging only if system config file cannot be found

The command 'git config --system --show-origin --list -z' fails if
the system config doesn't exist. Use debug logging instead of a
warning for failures of that command. Typically the user cannot do
anything about it anyway, and JGit will just work without system
config.

Bug: 577492
Change-Id: If628ab376182183aea57a385c169e144d371bbb2
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoUpdate .factorypath used by annotation processor for benchmarks 06/188206/1
Matthias Sohn [Fri, 26 Nov 2021 21:17:01 +0000 (22:17 +0100)]
Update .factorypath used by annotation processor for benchmarks

Change-Id: Idd2c4760d81aa61643ef15292f1736a649be30b5

2 years agoUse maven-compiler-plugin's release tag instead of source and target 05/188205/1
Matthias Sohn [Fri, 26 Nov 2021 09:19:23 +0000 (10:19 +0100)]
Use  maven-compiler-plugin's release tag instead of source and target

Change-Id: I090c8d074ae391a0721036bdc44e43c292a80963

2 years agoDon't use deprecated Repository#getAllRefs in Repository 36/188136/1
Matthias Sohn [Wed, 23 Jun 2021 08:29:21 +0000 (10:29 +0200)]
Don't use deprecated Repository#getAllRefs in Repository

Also expose the potentially IOException thrown by RefDatabase#getRefs.
Hence the following methods now potentially throw IOException:
- Repository#getAllRefsByPeeledObjectId

Bug: 534731
Change-Id: Id6956ff112560e6314d4335238494708346f2338

2 years agoDon't use deprecated Repository#getAllRefs in FileRepository 35/188135/1
Matthias Sohn [Wed, 23 Jun 2021 07:41:04 +0000 (09:41 +0200)]
Don't use deprecated Repository#getAllRefs in FileRepository

Also expose the potentially IOException thrown by RefDatabase#getRefs.
Hence the following methods now potentially throw IOException:
- AdvertiseRefsHook#advertiseRefs
- ReceivePack#setAdvertisedRefs
- Repository#getAdditionalHaves

Bug: 534731
Change-Id: I85bc6ce5815d40be5f80042c53f4663072d96be5

2 years agoRevListTest: fix warning that method parameter hides field 'git' 02/188102/1
Matthias Sohn [Wed, 24 Nov 2021 22:21:25 +0000 (23:21 +0100)]
RevListTest: fix warning that method parameter hides field 'git'

Change-Id: I12bd44e8bf75010ada2dff60f519fea61c7459de

2 years agoImplement RecordingLogger based on org.slf4j.Logger 01/188101/1
Matthias Sohn [Wed, 24 Nov 2021 22:11:36 +0000 (23:11 +0100)]
Implement RecordingLogger based on org.slf4j.Logger

Jetty 10 uses slf4j for logging and deprecated its own Logger interface
org.eclipse.jetty.util.log.Logger.

Change-Id: I1b0c3a23e43190a50987175973725c3ad6e32f5f

2 years agoLet ObjectDatabase implement AutoClosable 00/188100/1
Matthias Sohn [Wed, 24 Nov 2021 21:20:50 +0000 (22:20 +0100)]
Let ObjectDatabase implement AutoClosable

Bug: 549777
Change-Id: I09846a0e063aafa77de7e76dbc16c6a67d13b5e5

2 years agoPrepare 6.0.0-SNAPSHOT builds 76/188076/1
Matthias Sohn [Wed, 24 Nov 2021 17:18:12 +0000 (18:18 +0100)]
Prepare 6.0.0-SNAPSHOT builds

Change-Id: I4e06186cf62681767962e391331cc65bafddc205

2 years agoJGit v6.0.0.202111241155-rc1 75/188075/1 v6.0.0.202111241155-rc1
Matthias Sohn [Wed, 24 Nov 2021 16:54:51 +0000 (17:54 +0100)]
JGit v6.0.0.202111241155-rc1

Change-Id: I35dc089a00ee12f83f506fb320d23762fa030063
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2 years agoMerge branch 'master' into stable-6.0 69/188069/1
Matthias Sohn [Wed, 24 Nov 2021 16:49:02 +0000 (17:49 +0100)]
Merge branch 'master' into stable-6.0

* master:
  Add 4.22 target platform for 2021-12
  Update Orbit to R20211122181901 for 2021-12
  AppServer: fix keystore used to setup test SSL context factory
  [6.0 API cleanup] Public interface for PackLock
  [6.0 API cleanup] StoredObjectRepresentationNotAvailableException
  RepoCommand: Do not wrap GitApiExceptions in GitApiExceptions
  Set JSch global config values only if not set already
  Better git system config finding
  [6.0 API cleanup] CancelledException vs. CanceledException
  Javadoc fixes
  Better git system config finding
  HttpClientConnectionTest: organize imports
  Update Jetty to 10.0.6
  Fix missing @since 6.0 tag
  Support commit.template config property
  DFS block cache: harden against race over ref locks.

Change-Id: Id9814d92eb40b2ba63c5e753a86a4809826e7c81

3 years agoAdd 4.22 target platform for 2021-12 47/188047/1
Matthias Sohn [Wed, 24 Nov 2021 09:52:26 +0000 (10:52 +0100)]
Add 4.22 target platform for 2021-12

Change-Id: Ie003dee8390cb609bd3352c23e88aeb0bf1bc68b

3 years agoUpdate Orbit to R20211122181901 for 2021-12 46/188046/1
Matthias Sohn [Wed, 24 Nov 2021 09:36:56 +0000 (10:36 +0100)]
Update Orbit to R20211122181901 for 2021-12

Change-Id: Ieddfe7938d0743ffbe74fa7bb366030e93fa010c

3 years agoAppServer: fix keystore used to setup test SSL context factory 35/188035/2
Matthias Sohn [Tue, 23 Nov 2021 23:04:25 +0000 (00:04 +0100)]
AppServer: fix keystore used to setup test SSL context factory

- configure dName
- add SANs ip:127.0.0.1, ip:[::1]

See jetty's own test setup in
https://github.com/eclipse/jetty.project/blob/1cd15e8d85feb308527c3df560734fc2ca1bc13c/jetty-client/src/test/resources/readme_keystores.txt#L6

and the fixes done in
https://github.com/eclipse/jetty.project/commit/1cd15e8d85feb308527c3df560734fc2ca1bc13c

Change-Id: Ie3260db7a7090dfa92b43eb32bf247640ebf8482

3 years agoMerge "RepoCommand: Do not wrap GitApiExceptions in GitApiExceptions"
Ivan Frade [Tue, 23 Nov 2021 23:05:37 +0000 (18:05 -0500)]
Merge "RepoCommand: Do not wrap GitApiExceptions in GitApiExceptions"

3 years ago[6.0 API cleanup] Public interface for PackLock 91/187491/3
Thomas Wolf [Sun, 7 Nov 2021 20:43:07 +0000 (21:43 +0100)]
[6.0 API cleanup] Public interface for PackLock

Provide a public interface PackLock exposing only the unlock() method.
Rename the internal PackLock class to PackLockImpl and have it implement
the new interface.

This way PackParser doesn't expose an internal class via its API
anymore, and client can still unlock pack locks that were created.

Bug: 576340
Change-Id: I976739f4ab28fe1f9ba7f35653a69a913aa68841
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years ago[6.0 API cleanup] StoredObjectRepresentationNotAvailableException 47/187447/5
Thomas Wolf [Sat, 6 Nov 2021 23:56:06 +0000 (00:56 +0100)]
[6.0 API cleanup] StoredObjectRepresentationNotAvailableException

Remove the unused parameter, which had a non-API type anyway.

Bug: 576340
Change-Id: Id71c01a643e1f31a8ff61ff69f7915c373db3263
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge branch 'stable-5.13' 34/188034/1
Matthias Sohn [Tue, 23 Nov 2021 22:25:07 +0000 (23:25 +0100)]
Merge branch 'stable-5.13'

* stable-5.13:
  Set JSch global config values only if not set already
  Better git system config finding

Change-Id: I79848eeb3cda795ecb80ad845aa1027e2e231d18

3 years agoRepoCommand: Do not wrap GitApiExceptions in GitApiExceptions 02/184502/6
Ivan Frade [Thu, 26 Aug 2021 17:29:47 +0000 (10:29 -0700)]
RepoCommand: Do not wrap GitApiExceptions in GitApiExceptions

While building the commit for the destination project, RepoCommand
catches GitApiExceptions and wraps them into ManifestErrorException
(a subclass of GitApiException). This hides the real exception from the
caller and prevent them to do a fine-grained catch.

Specifically this is problematic for gerrit's supermanifest plugin, that
won't see ConcurrentRefUpdate exceptions to detect lock-failures.

Use ManifestErrorException to wrap non-GitApiExceptions, let
GitApiExceptions pass through as they are.

Change-Id: Ia2cda244e65993bb07c89cd6435507d5d0754dd4

3 years agoMerge branch 'stable-5.12' into stable-5.13 31/188031/1
Thomas Wolf [Tue, 23 Nov 2021 18:47:13 +0000 (19:47 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Better git system config finding

Change-Id: Iebbae08b6bb6ef510ca07329df77223bc2128ec1
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoSet JSch global config values only if not set already 30/188030/1
Thomas Wolf [Tue, 19 Oct 2021 07:07:14 +0000 (09:07 +0200)]
Set JSch global config values only if not set already

Bug: 576604
Change-Id: I04415f07bf2023bc8435c097d1d3c65221d563f1
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
(cherry picked from commit f8b0c00e6a8f5628babff6dd37254a21589b6e44)

3 years agoMerge branch 'stable-5.11' into stable-5.12 29/188029/1
Thomas Wolf [Tue, 23 Nov 2021 18:46:10 +0000 (19:46 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Better git system config finding

Change-Id: I47946b91658cb2e38709179b7a8513b1211431e4
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge branch 'stable-5.10' into stable-5.11 28/188028/1
Thomas Wolf [Tue, 23 Nov 2021 18:44:58 +0000 (19:44 +0100)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Better git system config finding

Change-Id: I460d855ea7878b279dbaffa6eb7ce5ca93f4c12c
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge branch 'stable-5.9' into stable-5.10 27/188027/1
Thomas Wolf [Tue, 23 Nov 2021 18:43:35 +0000 (19:43 +0100)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Better git system config finding

Change-Id: I1022d003e0d3b9d452abfed9ac49663d0a93c6e6
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoBetter git system config finding 24/188024/1
Thomas Wolf [Fri, 19 Nov 2021 18:15:46 +0000 (19:15 +0100)]
Better git system config finding

We've used "GIT_EDITOR=edit git config --system --edit" to determine
the location of the git system config for a long time. But git 2.34.0
always expects this command to have a tty, but there isn't one when
called from Java. If there isn't one, the Java process may get a
SIGTTOU from the child process and hangs.

Arguably it's a bug in C git 2.34.0 to unconditionally assume there
was a tty. But JGit needs a fix *now*, otherwise any application using
JGit will lock up if git 2.34.0 is installed on the machine.

Therefore, use a different approach if the C git found is 2.8.0 or
newer: parse the output of

  git config --system --show-origin --list -z

"--show-origin" exists since git 2.8.0; it prefixes the values with
the file name of the config file they come from, which is the system
config file for this command. (This works even if the first item in
the system config is an include.)

Bug: 577358
Change-Id: I3ef170ed3f488f63c3501468303119319b03575d
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
(cherry picked from commit 9446e62733da5005be1d5182f0dce759a3052d4a)

3 years ago[6.0 API cleanup] CancelledException vs. CanceledException 62/187962/2
Thomas Wolf [Mon, 22 Nov 2021 07:55:01 +0000 (08:55 +0100)]
[6.0 API cleanup] CancelledException vs. CanceledException

Use the GitAPIException CanceledException instead of IOException
CancelledException in the rename detector.

Change-Id: I5121719eb714a123ec57769fc113c84857bd3c6c
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoJavadoc fixes 73/187973/2
Thomas Wolf [Mon, 22 Nov 2021 10:47:21 +0000 (11:47 +0100)]
Javadoc fixes

Skip javadoc generation for test bundles.

Use character entities &lt; and &gt; for < and > outside of
code-formatted spans.

Change-Id: I66e1a1dc98881c61f93c9e5561c5513896b2ba01
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoBetter git system config finding 38/187938/3
Thomas Wolf [Fri, 19 Nov 2021 18:15:46 +0000 (19:15 +0100)]
Better git system config finding

We've used "GIT_EDITOR=edit git config --system --edit" to determine
the location of the git system config for a long time. But git 2.34.0
always expects this command to have a tty, but there isn't one when
called from Java. If there isn't one, the Java process may get a
SIGTTOU from the child process and hangs.

Arguably it's a bug in C git 2.34.0 to unconditionally assume there
was a tty. But JGit needs a fix *now*, otherwise any application using
JGit will lock up if git 2.34.0 is installed on the machine.

Therefore, use a different approach if the C git found is 2.8.0 or
newer: parse the output of

  git config --system --show-origin --list -z

"--show-origin" exists since git 2.8.0; it prefixes the values with
the file name of the config file they come from, which is the system
config file for this command. (This works even if the first item in
the system config is an include.)

Bug: 577358
Change-Id: I3ef170ed3f488f63c3501468303119319b03575d
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge changes I7e1f8627,Ibd0240cf
Matthias Sohn [Mon, 22 Nov 2021 20:15:13 +0000 (15:15 -0500)]
Merge changes I7e1f8627,Ibd0240cf

* changes:
  HttpClientConnectionTest: organize imports
  Update Jetty to 10.0.6

3 years agoHttpClientConnectionTest: organize imports 55/187955/4
Matthias Sohn [Sat, 20 Nov 2021 21:00:14 +0000 (22:00 +0100)]
HttpClientConnectionTest: organize imports

Change-Id: I7e1f8627a9360c660adc6f00fe48afe005929150

3 years agoUpdate Jetty to 10.0.6 18/187918/7
Matthias Sohn [Fri, 19 Nov 2021 08:23:12 +0000 (09:23 +0100)]
Update Jetty to 10.0.6

- this is the same version eclipse platform currently uses
- update servlet-api to 4.0
- configure keystore used by AppServer with Subject Alternative Names
  for host name and ip address to satisfy more strict SNI checking in
  Jetty 10. See https://github.com/eclipse/jetty.project/issues/5379
- add jetty bundles to JGit-dependency-bundles in the jgit p2 repository

Bug: 571932
Bug: 576100
Change-Id: Ibd0240cf7ad4dc201947fd69707f517c3c1fc1c8

3 years agoFix missing @since 6.0 tag 61/187961/1
Thomas Wolf [Mon, 22 Nov 2021 08:00:20 +0000 (09:00 +0100)]
Fix missing @since 6.0 tag

CommitConfig.getCommitTemplateContent() has changed API.

Change-Id: If72ed79c43c167b99f356b69cc095d6bbf4d66e8
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoSupport commit.template config property 77/185577/5
Julian Ruppel [Sat, 18 Sep 2021 13:02:03 +0000 (15:02 +0200)]
Support commit.template config property

Fixes an issue that commit template file could not be found if it has a
relative path instead of absolute path.

Relative path is probably common if git config --local is used.

Bug: 446355

Change-Id: I8ddf2be672647be825fd9c01af82809d31bb8356

3 years agoMerge branch 'stable-6.0' 57/187857/1
Matthias Sohn [Wed, 17 Nov 2021 21:40:48 +0000 (22:40 +0100)]
Merge branch 'stable-6.0'

* stable-6.0:
  Prepare 6.0.0-SNAPSHOT builds
  JGit v6.0.0.202111161950-m3

Change-Id: I55413bc9e93503130b7900840f75bd9243e156c9

3 years agoPrepare 6.0.0-SNAPSHOT builds 53/187853/1
Matthias Sohn [Wed, 17 Nov 2021 20:41:28 +0000 (21:41 +0100)]
Prepare 6.0.0-SNAPSHOT builds

Change-Id: Ibfc7fb21b039fe2a7669c8dee3c10f5ade33d520

3 years agoMerge "DFS block cache: harden against race over ref locks."
Ivan Frade [Wed, 17 Nov 2021 16:58:24 +0000 (11:58 -0500)]
Merge "DFS block cache: harden against race over ref locks."

3 years agoJGit v6.0.0.202111161950-m3 00/187800/1 v6.0.0.202111161950-m3
Matthias Sohn [Wed, 17 Nov 2021 00:50:01 +0000 (01:50 +0100)]
JGit v6.0.0.202111161950-m3

Change-Id: If6c36994be05848c567d3d664eb683d9bed26c48
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
3 years agoMerge branch 'master' into stable-6.0 98/187798/1
Matthias Sohn [Wed, 17 Nov 2021 00:44:52 +0000 (01:44 +0100)]
Merge branch 'master' into stable-6.0

* master:
  Make BinaryBlobException stackless
  Typo fix in o.e.j.ssh.{jsch,apache}/README.md
  ssh: Handle "ProxyJump none" from SSH config file
  ssh: use a single SecureRandom instance for hashing hostnames
  OpenSshConfigFile: line comments and quoted strings
  OpenSshConfigFile: update token replacements
  Add missing .gitignore in o.e.j.ssh.apache.agent
  Upgrade plexus-compiler version to 2.9.0
  [sshd agent] Introduce ConnectorDescriptor
  Update version of last release defining the API baseline to 5.13.0
  Update Orbit to S20211108222137
  Update README
  Update jetty to 9.4.44.v20210927
  Simplify SshdFtpChannel
  [test] test OpenSshConfigFile directly, not via the JSch config
  sshd: add support for ssh-agent
  sshd: prepare for using an SSH agent
  [releng] bazel: Enable errorprone on o.e.j.ssh.apache
  [releng] Make the bazel build use Java 11
  Fix target platforms
  [doc] Add README and package-info to the SSH bundles
  Binary and CR-LF detection: lone CRs -> binary
  Factor out parsing git-style size numbers to StringUtils
  Make the buffer size for text/binary detection configurable

Change-Id: I5c78eeca3abfc3e0a659ed8a258c4e96e9469713

3 years agoDFS block cache: harden against race over ref locks. 90/187790/5
Alina Djamankulova [Tue, 16 Nov 2021 17:53:20 +0000 (09:53 -0800)]
DFS block cache: harden against race over ref locks.

With change https://git.eclipse.org/r/c/jgit/jgit/+/186455 a thread
loading a bitmap index could hold two ref locks at the same time (one
for bitmap and one for either index or reverse index). So it is possible
that two threads loading bitmaps end up in a deadlock for ref locks e.g.
threadA has refLock[1] (for bitmap) and wants refLock[2] (for index or
revIndex) and threadB has refLock[2] (for bitmap) and wants refLock[1].

This change introduces separate pools of locks per pack extension
instead of a shared pool. So threads loading bitmap can hold two
locks but with different extensions and no overlap, e.g. threadA holds
refLock[BITMAP_INDEX][1] and refLock[INDEX][2] and threadB holds
refLock[BITMAP_INDEX][2] and refLock[INDEX][1].

More unit tests were added to cover various paralell loading scenarios.

Signed-off-by: Alina Djamankulova <adjama@google.com>
Change-Id: I89704b4721c21548929608d3798ef60925280755

3 years agoMake BinaryBlobException stackless 04/187204/3
Matthias Sohn [Sun, 31 Oct 2021 23:53:10 +0000 (00:53 +0100)]
Make BinaryBlobException stackless

We use BinaryBlobException to signal a binary blob was found and never
make use of its stack trace. Suppress filling in the stack trace to
avoid the performance penalty coming with that.

See https://shipilev.net/blog/2014/exceptional-performance/

Change-Id: Iae1f1c19a1fa8aef4f6569822557171130299958

3 years agoTypo fix in o.e.j.ssh.{jsch,apache}/README.md 16/187716/3
Thomas Wolf [Sat, 13 Nov 2021 18:00:58 +0000 (19:00 +0100)]
Typo fix in o.e.j.ssh.{jsch,apache}/README.md

Change-Id: Ia7da92421f8fecb2a175eb23ecfd04a67e0ca8cc
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agossh: Handle "ProxyJump none" from SSH config file 15/187715/2
Thomas Wolf [Sat, 13 Nov 2021 17:10:13 +0000 (18:10 +0100)]
ssh: Handle "ProxyJump none" from SSH config file

Since OpenSSH 7.8, the ProxyJump directive accepts the value "none"[1]
to override and clear a setting that might otherwise be contributed by
another (wildcard) host entry.

[1] https://bugzilla.mindrot.org/show_bug.cgi?id=2869

Change-Id: Ia35e82c6f8c58d5c6b8040cda7a07b220f43fc21
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agossh: use a single SecureRandom instance for hashing hostnames 14/187714/5
Thomas Wolf [Sat, 13 Nov 2021 12:09:58 +0000 (13:09 +0100)]
ssh: use a single SecureRandom instance for hashing hostnames

According to Spotbugs, that's better practice. It's questionable
whether it makes a big difference, though, especially since the
hash is the cryptographically weak SHA1.

Change-Id: Id293de2bad809d9cc19230bd720184786dc6c226
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoOpenSshConfigFile: line comments and quoted strings 13/187713/5
Thomas Wolf [Sat, 13 Nov 2021 12:09:01 +0000 (13:09 +0100)]
OpenSshConfigFile: line comments and quoted strings

Bring our SSH config parser up-to-date with respect to changes in
OpenSSH. In particular, they fixed[1] the handling of line comments
such that #-characters inside strings are not considered. This means
that we have to parse strings with escaped quotes correctly.

[1] https://bugzilla.mindrot.org/show_bug.cgi?id=3288

Change-Id: Ifbd9014127e8d51e7c8792e237f3fc2a9a0719d2
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoOpenSshConfigFile: update token replacements 12/187712/2
Thomas Wolf [Sat, 13 Nov 2021 12:08:14 +0000 (13:08 +0100)]
OpenSshConfigFile: update token replacements

It appears that the OpenSSH documentation[1] has changed; it now allows
more flags for a number of keys.

[1] https://man.openbsd.org/ssh_config.5#TOKENS

Change-Id: I55df174f86a3fd4a6ef22687dc433ac9f9ad181d
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge "Upgrade plexus-compiler version to 2.9.0"
Matthias Sohn [Mon, 15 Nov 2021 15:57:32 +0000 (10:57 -0500)]
Merge "Upgrade plexus-compiler version to 2.9.0"

3 years agoAdd missing .gitignore in o.e.j.ssh.apache.agent 30/187730/1
Thomas Wolf [Mon, 15 Nov 2021 09:37:36 +0000 (10:37 +0100)]
Add missing .gitignore in o.e.j.ssh.apache.agent

Ignore /bin and /target.

Change-Id: I38f3748273b5243c54e010bfceac745084755f45
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoUpgrade plexus-compiler version to 2.9.0 41/187641/2
Marco Miller [Thu, 11 Nov 2021 14:17:54 +0000 (09:17 -0500)]
Upgrade plexus-compiler version to 2.9.0

Change-Id: I24ac698d3ccc01e79464b061068944ca82e8383b
Signed-off-by: Marco Miller <marco.miller@ericsson.com>
3 years ago[sshd agent] Introduce ConnectorDescriptor 73/187573/2
Thomas Wolf [Wed, 27 Oct 2021 12:03:10 +0000 (14:03 +0200)]
[sshd agent] Introduce ConnectorDescriptor

Once a factory supports different SSH agents on the same platform,
which is planned for Windows once we use Apache MINA sshd 2.8.0,
client code may need to have a way to specify which SSH agent shall
be used when the SSH config doesn't define anything.

Add a mechanism by which a ConnectorFactory can tell what Connectors
it may provide. Client code can use this to set the identityAgent
parameter of ConnectorFactory.create() to the wanted default if it
would be null otherwise.

A ConnectorDescriptor is a pair of strings: an internal name, and a
display name. The latter is included because client code might want to
communicate agent names to the user, be it in error messages or in some
chooser dialog where a user could define which of several alternative
SSH agents should be used as default. The internal name is intended to
be used in the IdentityAgent directive in ~/.ssh/config.

Also make the ConnectorFactory discovered via the ServiceLoader
accessible and overrideable. Provide static get/setDefault() methods,
similar to the SshSessionFactory itself.

Change-Id: Ie3d077395d32dfddc72bc8627e92b23636938182
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoUpdate version of last release defining the API baseline to 5.13.0 94/187594/1
Matthias Sohn [Wed, 10 Nov 2021 14:56:36 +0000 (15:56 +0100)]
Update version of last release defining the API baseline to 5.13.0

Change-Id: I48e0d677a466a364fdd699cdb00014a9a65d082a

3 years agoUpdate Orbit to S20211108222137 85/187585/1
Matthias Sohn [Wed, 10 Nov 2021 13:51:29 +0000 (14:51 +0100)]
Update Orbit to S20211108222137

and update dependencies:
- com.google.gson to 2.8.8.v20211029-0838
- com.googlecode.javaewah to 1.1.13.v20211029-0839
- net.i2p.crypto.eddsa to 0.3.0.v20210923-1401
- org.apache.ant to 1.10.12.v20211102-1452
- org.apache.commons.compress to 1.21.0.v20211103-2100
- org.bouncycastle.bcprov to 1.69.0.v20210923-1401
- org.junit to 4.13.2.v20211018-1956

Change-Id: I90ca64f6d9f2a15c9a5d9a27d48956182f1698b4

3 years agoUpdate README 45/187445/2
Thomas Wolf [Sat, 6 Nov 2021 23:47:14 +0000 (00:47 +0100)]
Update README

* Java 11 now
* Mention new bundle org.eclipse.jgit.ssh.apache.agent
* Be honest about missing features: there are quite a few

Change-Id: Ie08a2b4581024febe1983a59414cf69845ebff96
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoUpdate jetty to 9.4.44.v20210927 65/187365/3
Matthias Sohn [Thu, 4 Nov 2021 23:13:52 +0000 (00:13 +0100)]
Update jetty to 9.4.44.v20210927

Change-Id: Iaa1478af0fe0ccfa1daf1cf44e4eef609e7ad8bb

3 years agoSimplify SshdFtpChannel 58/187358/1
Thomas Wolf [Sun, 31 Oct 2021 16:29:04 +0000 (17:29 +0100)]
Simplify SshdFtpChannel

Apache MINA sshd has simpler API for reading directories, and it has a
functional interface suitable for us. So no need to use our own
interface, or to deal with low-level abstractions like CloseableHandle.

Change-Id: Ic125c587535670504983f157a696b41ed6a76bb7
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years ago[test] test OpenSshConfigFile directly, not via the JSch config 52/186452/2
Thomas Wolf [Wed, 13 Oct 2021 20:21:52 +0000 (22:21 +0200)]
[test] test OpenSshConfigFile directly, not via the JSch config

This is a prerequisite for removing the JSch support bundle; otherwise
OpenSshConfigFile would be left without tests.

Copy OpenSshConfigTest from the JSch support bundle and adapt all tests
to perform the equivalent checks on OpenSshConfigFile directly. Add a
new lookupDefault() method to the SshConfigStore interface and implement
it so that it behaves the same and the tests work identically.

Change-Id: I046abd9197a8484003e77005024e5d973456f1a3

3 years agosshd: add support for ssh-agent 59/186859/11
Thomas Wolf [Tue, 2 Nov 2021 17:48:25 +0000 (18:48 +0100)]
sshd: add support for ssh-agent

Add a simple SSH agent connector using JNA. Include com.sum.jna and
com.sun.jna.platform in the target platform.

JNA is used to communicate through Unix domain sockets with ssh-agent,
and if on Windows, to communicate via shared memory with Pageant.

The new bundle o.e.j.ssh.apache.agent is an OSGi fragment so that
the java.util.ServiceLoader can find the provided factory without
further ado in OSGi environments.

Adapt both maven and bazel builds to include the new bundle.

Manually tested on OS X, CentOS 7, and Win10 with Pageant 0.76. Tested
by installing JGit built from this change into freshly downloaded
Eclipse 2021-12 M1, and then doing git fetches via SSH with different
~/.ssh/config settings (explicit IdentityFile, without any but a key in
the agent, with no keys and a key in the agent and IdentitiesOnly=yes
(must fail)).

Bug: 541274
Bug: 541275
Change-Id: I34e85467293707dbad1eb44d1f40fc2e70ba3622
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agosshd: prepare for using an SSH agent 58/186858/7
Thomas Wolf [Wed, 20 Oct 2021 07:51:43 +0000 (09:51 +0200)]
sshd: prepare for using an SSH agent

Add interfaces Connector and ConnectorFactory. A "connector" is just
something that knows how to connect to an ssh-agent and then can make
simple synchronous RPC-style requests (request-reply).

Add a way to customize an SshdSessionFactory with a ConnectorFactory.
Provide a default setup using the Java ServiceLoader mechanism to
discover an ConnectorFactory.

Implement an SshAgentClient in the internal part. Unfortunately we
cannot re-use the implementation in Apache MINA sshd: it's hard-wired
to Apache Tomcat APR, and it's also buggy.

No behavior changes yet since there is nothing that would provide an
actual ConnectorFactory. So for Apache MINA sshd, the SshAgentFactory
remains null as before.

Change-Id: I963a3d181357df2bdb66298bc702f2b9a6607a30
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years ago[releng] bazel: Enable errorprone on o.e.j.ssh.apache 42/187242/2
Thomas Wolf [Tue, 2 Nov 2021 18:20:59 +0000 (19:20 +0100)]
[releng] bazel: Enable errorprone on o.e.j.ssh.apache

Fix the few issues reported. (None serious.)

Change-Id: I8d72ef7d425ab61f4c27b657c92fc021850730d6
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years ago[releng] Make the bazel build use Java 11 41/187241/2
Thomas Wolf [Tue, 2 Nov 2021 17:47:26 +0000 (18:47 +0100)]
[releng] Make the bazel build use Java 11

Make the default toolchain use Java 11, and fix two errorprone findings
introduced recently.

Change-Id: Iff51206fe8bdf096cb7d88cb1a499002550766cd
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge branch 'stable-5.13' 93/187293/1
Matthias Sohn [Wed, 3 Nov 2021 22:25:17 +0000 (23:25 +0100)]
Merge branch 'stable-5.13'

* stable-5.13:
  Fix target platforms

Change-Id: Iabbbacd6acde07a2e0ff156842b928a3ba18b4c6

3 years agoMerge branch 'stable-5.12' into stable-5.13 92/187292/1
Matthias Sohn [Wed, 3 Nov 2021 22:18:21 +0000 (23:18 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Fix target platforms

- jetty 9.4.43 moved to archive.eclipse.org
- use the final release p2 repo instead of staging for 2021-09

Change-Id: I35c1264b8e9c63874663141288dca03b47f263ed

3 years agoMerge branch 'stable-5.11' into stable-5.12 90/187290/1
Matthias Sohn [Wed, 3 Nov 2021 22:13:39 +0000 (23:13 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Fix target platforms

- jetty 9.4.41 moved to archive.eclipse.org
- use the final release p2 repo instead of staging for 2021-06

Change-Id: I7a02b1fe271910dd82acf45242d8425aba2f52f9

3 years agoMerge branch 'stable-5.10' into stable-5.11 89/187289/1
Matthias Sohn [Wed, 3 Nov 2021 22:09:15 +0000 (23:09 +0100)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Fix target platforms

- jetty 9.4.36 moved to archive.eclipse.org
- use the final release p2 repo instead of staging for 2021-03

Change-Id: I6ce2294bb150fedf8ded7fe6c1e23019d9c178d6

3 years agoMerge branch 'stable-5.9' into stable-5.10 88/187288/1
Matthias Sohn [Wed, 3 Nov 2021 22:01:44 +0000 (23:01 +0100)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Fix target platforms

Change-Id: Ib1876923ba98252682f41a03877792fd22b418d6

3 years agoFix target platforms 87/187287/1
Matthias Sohn [Wed, 3 Nov 2021 21:40:48 +0000 (22:40 +0100)]
Fix target platforms

- jetty 9.4.30 moved to archive.eclipse.org
- use the final release p2 repo instead of staging for 2020-09

Change-Id: Ia096200e5983f0022c6c0da4dae035433e852807

3 years ago[doc] Add README and package-info to the SSH bundles 00/187200/1
Thomas Wolf [Sun, 31 Oct 2021 13:57:30 +0000 (14:57 +0100)]
[doc] Add README and package-info to the SSH bundles

Explain in the JSch bundle that it is essentially unmaintained. Add
descriptions in both bundles explaining how to use it, or how to use
an alternate implementation.

Change-Id: Idaf46c33b14543279f78a55cb7c6bd42b06ee6b8
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoBinary and CR-LF detection: lone CRs -> binary 98/187198/1
Thomas Wolf [Sat, 30 Oct 2021 23:35:52 +0000 (01:35 +0200)]
Binary and CR-LF detection: lone CRs -> binary

C git considers not only files containing NUL bytes as binary but also
files containing lone CRs. Implement this also for JGit.

C git additionally counts printable vs. non-printable characters and
considers files that have non_printable_count > printable_count / 128
also as binary. This is not implemented because such counting probably
only makes sense if one looks at the full file or blob content. The
Auto[CR]LF* streams in JGit look only at the first few KiB of a stream
in order not to buffer too much.

For the C git implementation, see [1].

[1] https://github.com/git/git/blob/7e27bd589d/convert.c#L35

Bug: 576971
Change-Id: Ia169b59bdbf1477f32ee2014eeb8406f81d4b1ab
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoFactor out parsing git-style size numbers to StringUtils 90/187190/2
Thomas Wolf [Sat, 30 Oct 2021 17:37:44 +0000 (19:37 +0200)]
Factor out parsing git-style size numbers to StringUtils

Move the code to parse numbers with an optional 'k', 'm', or 'g' suffix
from the config file handling to StringUtils. This enables me to re-use
it in EGit, which has duplicate code in StorageSizeFieldEditor.

As this is generally useful functionality, providing it in the library
makes sense.

Change-Id: I86e4f5f62e14f99b35726b198ba3bbf1669418d9
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMake the buffer size for text/binary detection configurable 89/187189/2
Thomas Wolf [Tue, 12 Oct 2021 22:28:38 +0000 (00:28 +0200)]
Make the buffer size for text/binary detection configurable

The various streams used in JGit for text/binary and CR-LF detection
used different buffer sizes. Most used 8000, but one used 8KiB, and one
used 8096 (SIC!) bytes.

Considering only the first 8kB of a file/blob is not sufficient; it
may give behavior incompatible with C git. C git considers the whole
blob; since it uses memory-mapped files it can do so with acceptable
performance. Doing this in JGit would most likely incur a noticeable
performance penalty. But 8kB is a bit small; in the file in bug 576971
the limit was hit before the first CR-LF, which occurred on line 155
at offset 9759 in the file.

Make RawText.FIRST_FEW_BYTES only a default and minimum setting, and
set it to 8KiB. Make the actual buffer size configurable: provide
static methods getBufferSize() and setBuffersize(), and use
getBufferSize() throughout instead of the constant.

This enables users of the JGit library to set their own possibly larger
buffer size.

Bug: 576971
Change-Id: I447762c9a5147a521f73d2864ba59ed89f555d54
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge branch 'stable-6.0' 86/187086/1
Matthias Sohn [Thu, 28 Oct 2021 12:27:29 +0000 (14:27 +0200)]
Merge branch 'stable-6.0'

* stable-6.0:
  Prepare 6.0.0-SNAPSHOT builds
  JGit v6.0.0.202110270955-m2
  Prepare 6.0.0-SNAPSHOT builds
  JGit v6.0.0.202110060947-m1

Change-Id: I3c0f760ce13b6afbfb06ebd569ce0162b531d67d

3 years agoPrepare 6.0.0-SNAPSHOT builds 71/187071/1
Matthias Sohn [Thu, 28 Oct 2021 07:20:25 +0000 (09:20 +0200)]
Prepare 6.0.0-SNAPSHOT builds

Change-Id: Iff7b4f834ecb43c7a0a9bf79bb8b30dd10d1fa07

3 years agoJGit v6.0.0.202110270955-m2 34/187034/1 v6.0.0.202110270955-m2
Matthias Sohn [Wed, 27 Oct 2021 12:54:49 +0000 (14:54 +0200)]
JGit v6.0.0.202110270955-m2

Change-Id: I8057bbbf6acd478ad062e30cf5cbfc287531a66a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
3 years agoMerge branch 'master' into stable-6.0 30/187030/1
Matthias Sohn [Wed, 27 Oct 2021 12:48:15 +0000 (14:48 +0200)]
Merge branch 'master' into stable-6.0

* master:
  Fix checkout of files with mixed line endings on text=auto eol=crlf
  Don't rely on an implicit default character set
  Fix bad indentation in pom.xml
  Minor code-clean-up in OpenSshConfigFile
  Remove use of deprecated getAllRefs() in UploadPack
  DFS block cache: fix lock issue and support parallel index loading
  JSch: fix service publication for ServiceLoader
  Set JSch global config values only if not set already
  Fix missing peel-part in lsRefsV2 for loose annotated tags
  DFS block cache: allow multiple passes for blocks before eviction
  Fix RevWalk.getMergedInto() ignores annotated tags
  Optimize RevWalk.getMergedInto()
  GarbageCollectCommand: add numberOfBitmaps to statistics
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix running benchmarks from bazel
  Update eclipse-jarsigner-plugin to 1.3.2
  Add org.bouncycastle.bcutil to p2 repository

Change-Id: Icaa36ded0439853a05ce21de9282e69d87a32284

3 years agoFix checkout of files with mixed line endings on text=auto eol=crlf 07/186407/3
Thomas Wolf [Tue, 12 Oct 2021 20:14:33 +0000 (22:14 +0200)]
Fix checkout of files with mixed line endings on text=auto eol=crlf

Add tests for files having been checked in with mixed LF and CR-LF
line endings, and then being checked out with text or text=auto and
eol=lf or eol=crlf. These test cases were missing, and thus commit
efd1cc05 missed that AutoCRLFOutputStream needs the same detection
as AutoLFOutputStream.

Fix AutoCRLFOutputStream to not convert line endings if the blob in
the repository contains CR-LF.

Bug: 575393
Change-Id: Id0c7ae772e282097e95fddcd3f1f9d82aae31e43
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoDon't rely on an implicit default character set 95/185995/3
Thomas Wolf [Fri, 3 Sep 2021 17:49:27 +0000 (19:49 +0200)]
Don't rely on an implicit default character set

JEP 400 (Java 18) will change the default character set to UTF-8
unconditionally.[1] Introduce SystemReader.getDefaultCharset() that
provides the locale-dependent charset the way JEP 400 recommends.

Change all code locations using Charset.defaultCharset() to use the
new SystemReader method instead.

[1] https://openjdk.java.net/jeps/400

Change-Id: I986f97a410d2fc70748b6f93228a2d45ff100b2c
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoFix bad indentation in pom.xml 69/186869/1
Thomas Wolf [Sun, 24 Oct 2021 19:32:33 +0000 (21:32 +0200)]
Fix bad indentation in pom.xml

Change-Id: I683f190d6914fb48f32cc3b3f0910b4264c7d725
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMinor code-clean-up in OpenSshConfigFile 57/186857/2
Thomas Wolf [Wed, 20 Oct 2021 19:17:55 +0000 (21:17 +0200)]
Minor code-clean-up in OpenSshConfigFile

Change-Id: I45d50198e43aeb2a56c74026de7ee8c1a30f9d10
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoRemove use of deprecated getAllRefs() in UploadPack 78/182378/5
Matthias Sohn [Wed, 23 Jun 2021 08:38:50 +0000 (10:38 +0200)]
Remove use of deprecated getAllRefs() in UploadPack

Repository.getAllRefs() is deprecated and should not
be used anymore.

Bug: 534731
Change-Id: I037a9b901275bfa7952b4c79861d7639c9d42715

3 years agoDFS block cache: fix lock issue and support parallel index loading 55/186455/5
Alina Djamankulova [Wed, 13 Oct 2021 20:16:41 +0000 (13:16 -0700)]
DFS block cache: fix lock issue and support parallel index loading

This change is a fix to http://git.eclipse.org/r/c/jgit/jgit/+/183562
that was reverted in http://git.eclipse.org/r/c/jgit/jgit/+/184978
due to deadlocks. Separate locks in DfsBlockFile are removed to rely
on getting value from DfsBlockCache with region locking in place.

With this change bitmap index creation is not blocked on index and
reverse index full initialization in DfsPackFile. Now bitmap index
and index could be read from storage in parallel in separate threads.

A unit test is added for parallel index loading.

Signed-off-by: Alina Djamankulova <adjama@google.com>
Change-Id: Ic6d9c5a4a254628636aa98a5008447a27a003f69

3 years agoMerge changes I1f180d7f,I04415f07
Thomas Wolf [Tue, 19 Oct 2021 09:38:54 +0000 (05:38 -0400)]
Merge changes I1f180d7f,I04415f07

* changes:
  JSch: fix service publication for ServiceLoader
  Set JSch global config values only if not set already

3 years agoJSch: fix service publication for ServiceLoader 43/186643/1
Thomas Wolf [Tue, 19 Oct 2021 07:32:20 +0000 (09:32 +0200)]
JSch: fix service publication for ServiceLoader

The file name in META-INF/services must be the fully qualified
interface name; the content the fully qualified implementation class
name.

This was broken in commit 9683bc71.

Add a test for the default factory being found by the ServiceLoader.

Change-Id: I1f180d7f60e5c1e74a39bbd9a5f0099bd8343e21
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoSet JSch global config values only if not set already 38/186638/1
Thomas Wolf [Tue, 19 Oct 2021 07:07:14 +0000 (09:07 +0200)]
Set JSch global config values only if not set already

Bug: 576604
Change-Id: I04415f07bf2023bc8435c097d1d3c65221d563f1
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
3 years agoMerge branch 'stable-5.13' 60/186560/1
Matthias Sohn [Fri, 15 Oct 2021 21:10:12 +0000 (23:10 +0200)]
Merge branch 'stable-5.13'

* stable-5.13:
  Fix missing peel-part in lsRefsV2 for loose annotated tags
  Fix RevWalk.getMergedInto() ignores annotated tags
  Optimize RevWalk.getMergedInto()
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix running benchmarks from bazel
  Update eclipse-jarsigner-plugin to 1.3.2
  Add org.bouncycastle.bcutil to p2 repository

Change-Id: I789e3c84045cc9dcd8a26de34d09fc1e3ccc41e7

3 years agoMerge branch 'stable-5.12' into stable-5.13 56/186556/1
Matthias Sohn [Fri, 15 Oct 2021 20:58:21 +0000 (22:58 +0200)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Fix missing peel-part in lsRefsV2 for loose annotated tags
  Fix RevWalk.getMergedInto() ignores annotated tags
  Optimize RevWalk.getMergedInto()
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix running benchmarks from bazel
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: Ie5da8d2d07f39ab5aaeca560040637635d4eb04c

3 years agoMerge branch 'stable-5.11' into stable-5.12 55/186555/1
Matthias Sohn [Fri, 15 Oct 2021 20:48:01 +0000 (22:48 +0200)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Fix missing peel-part in lsRefsV2 for loose annotated tags
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix running benchmarks from bazel
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: I2122b3966bddb10d43d439eb8c5d6cc4583c6ba6

3 years agoMerge branch 'stable-5.10' into stable-5.11 53/186553/1
Matthias Sohn [Fri, 15 Oct 2021 20:45:18 +0000 (22:45 +0200)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Fix missing peel-part in lsRefsV2 for loose annotated tags
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix running benchmarks from bazel
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: I23ccb89306263ce042ce782d881812d4b5187672

3 years agoMerge branch 'stable-5.9' into stable-5.10 52/186552/1
Matthias Sohn [Fri, 15 Oct 2021 20:32:00 +0000 (22:32 +0200)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Fix missing peel-part in lsRefsV2 for loose annotated tags
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix running benchmarks from bazel
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: I4e7c7727ebfa9a7748477f2300bd66d775548ad6

3 years agoFix missing peel-part in lsRefsV2 for loose annotated tags 20/186520/4
Saša Živkov [Fri, 15 Oct 2021 08:13:53 +0000 (10:13 +0200)]
Fix missing peel-part in lsRefsV2 for loose annotated tags

We observed the following issue:

  $ git tag -a v1.0 -m v1.0
  $ git push origin tag v1.0
  $ git ls-remote origin v1.0^{}
  ... empty result ...

  On the server (Gerrit) side run git-gc to pack the refs:
  $ git gc

  Repeat the ls-remote from the client and the result is correct:
  $ git ls-remote origin v1.0^{}
  7ad85c810de3ae922903d4bdd17c53cd627260ba        refs/tags/v1.0^{}

Unfortunately, the existing UploadPackTest didn't reveal this issue
although it provided the test case needed to do so: testV2LsRefsPeel.
This is because The UploadPackTest uses InMemoryRepository which
internally uses Dfs* implementations. The issue is only reproducible
when using the FileRepository.

It is a non-trivial task to refactor the UploadPackTest to work against
both InMemoryRepository and FileRepository and this change is not trying
to do that. This change creates a new test:
UploadPackLsRefsFileRepositoryTest and copies the necesssary code from
the UploadPackTest.

Change-Id: Icfc7d0ca63f1524bafe24c9626ce12ea72aa3718
Signed-off-by: Saša Živkov <sasa.zivkov@sap.com>
3 years agoDFS block cache: allow multiple passes for blocks before eviction 41/184341/6
Alina Djamankulova [Tue, 24 Aug 2021 01:22:41 +0000 (18:22 -0700)]
DFS block cache: allow multiple passes for blocks before eviction

Let certain pack extensions that are expensive to load from storage
(e.g. pack index, bitmap index) stay in DFS block cache longer than
others by overriding default cache count through DfsBlockCacheConfig

Don't change default behavior when cache override map is empty. Use int
cacheCount instead of boolean hot for Ref<T>

Signed-off-by: Alina Djamankulova <adjama@google.com>
Change-Id: I18062784ec9cc14dbba3e4bb8d9509440cf2d44f

3 years agoFix RevWalk.getMergedInto() ignores annotated tags 01/184901/5
kylezhao [Thu, 2 Sep 2021 03:53:48 +0000 (11:53 +0800)]
Fix RevWalk.getMergedInto() ignores annotated tags

If an annotated tag refers to a commit, we should not ignore it.

Change-Id: I77504f93636e9e984540e7d8535ef301adce6a80
Signed-off-by: kylezhao <kylezhao@tencent.com>
3 years agoOptimize RevWalk.getMergedInto() 06/184806/6
kylezhao [Tue, 31 Aug 2021 11:36:44 +0000 (19:36 +0800)]
Optimize RevWalk.getMergedInto()

Transitive Relation Definition:
On the DAG of commit history, if A can reach B, C can reach A, then C
can reach B.

Example:
As is shown in the graph below:

  1 - 2 - 3 - 4 (side)
            \
             5 -  6^ (master) - 7 (topic)

Find out which branches is 2 merged into:
After we calculated that master contains 2, we can mark 6 as TEMP_MARK
to avoid unwanted walks.
When we want to figure out if 2 is merge into the topic, the traversal
path would be [7, 6] instead of [7, 6, 5, 3, 2].

Test:
This change can significantly improve performance for tags.
On a copy of the Linux repository, the command 'git tag --contains
<commit>' had the following performance improvement:

commit      | Before   | After   | Rel %
47a44d27ca  | 29251ms  | 6687ms  | -77%
90327e7dff  | 21388ms  | 6256ms  | -70%
f85fac0efa  | 11150ms  | 7338ms  | -34%

The current version ignores tags, even though the tag is a type of
the ref.
Follow-up commits I'll fix it.

Change-Id: Ie6295ca4d16070499912af462239e679a97cce47
Signed-off-by: kylezhao <kylezhao@tencent.com>
Reviewed-by: Christian Halstrick <christian.halstrick@sap.com>
Reviewed-by: Martin Fick <mfick@codeaurora.org>
3 years agoGarbageCollectCommand: add numberOfBitmaps to statistics 80/185880/5
kylezhao [Tue, 28 Sep 2021 02:48:11 +0000 (10:48 +0800)]
GarbageCollectCommand: add numberOfBitmaps to statistics

Change-Id: I630afac9408c7313d1cecb1b24476f645c94fc27
Signed-off-by: kylezhao <kylezhao@tencent.com>