]> source.dussan.org Git - jgit.git/log
jgit.git
2 years agoUploadPack: do not check reachability of visible SHA1s 96/193496/11
Luca Milanesio [Thu, 19 May 2022 10:12:28 +0000 (11:12 +0100)]
UploadPack: do not check reachability of visible SHA1s

When JGit needs to serve a Git client requesting SHA1s
during the want phase, it needs to make a full reachability
check from the advertised refs to the ones requested to
keep all objects in the correct scope of confidentiality
allowed by the avertised refs.

The check is also performed when the SHA1 corresponds to
one of the tips of the advertised refs which is a waste of
resources.

Example:

fetch> ref-prefix refs/heads/foo
fetch< 900505eb8ce8ced2a1757906da1b25c357b9654e refs/heads/foo
fetch< 0000
fetch> command=fetch
fetch> 0001
fetch> thin-pack
fetch> ofs-delta
fetch> want 900505eb8ce8ced2a1757906da1b25c357b9654e

The SHA1 in the want is the tip of refs/heads/foo and therefore
the full reachability check can be shortened and resolved more
quickly.

Change-Id: I49bd9e2464e0bd3bca2abf14c6e9df550d07383b
Signed-off-by: Luca Milanesio <luca.milanesio@gmail.com>
2 years agoAdd missing package import javax.management to org.eclipse.jgit 34/194234/1
Matthias Sohn [Fri, 17 Jun 2022 11:49:59 +0000 (13:49 +0200)]
Add missing package import javax.management to org.eclipse.jgit

Class org.eclipse.jgit.util.Monitoring uses JMX hence we need this
import otherwise OSGi applications can face ClassNotFoundException.

Bug: 577018
Change-Id: Ifd75337b87c7faec95d333b771bb0a2f3e46a418

2 years agoPrepare 5.13.2-SNAPSHOT builds 46/194146/1
Matthias Sohn [Mon, 13 Jun 2022 22:41:18 +0000 (00:41 +0200)]
Prepare 5.13.2-SNAPSHOT builds

Change-Id: I4862e5d80a7d95a1a119d06306e3f6927445d1d3

2 years agoJGit v5.13.1.202206130422-r 19/194119/1 v5.13.1.202206130422-r
Matthias Sohn [Mon, 13 Jun 2022 08:22:43 +0000 (10:22 +0200)]
JGit v5.13.1.202206130422-r

Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Change-Id: Ife74d64e8171c68dbf08271492c0ac852a6dc51c

2 years agoAmazonS3: Add support for AWS API signature version 4 12/193712/6
eric.steele [Wed, 1 Jun 2022 01:03:17 +0000 (18:03 -0700)]
AmazonS3: Add support for AWS API signature version 4

Updating the AmazonS3 class to support AWS Signature version 4 because
version 2 is no longer supported in all AWS regions. The version can be
selected with the new 'aws.api.signature.version' property (defaults to
2 for backwards compatibility). When set to '4', the user must also
specify the AWS region via the 'region' property. The 'region' property
must match the region that the 'domain' property resolves to.

Bug: 579907
Change-Id: If289dbc6d0f57323cfeaac2624c4eb5028f78d13

2 years agoMerge branch 'stable-5.12' into stable-5.13 70/193970/1
Matthias Sohn [Tue, 7 Jun 2022 09:34:25 +0000 (11:34 +0200)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Fix connection leak for smart http connections

Change-Id: Id34f29c1b27a80c2b56c911cad7e3f64ef63af48

2 years agoMerge branch 'stable-5.11' into stable-5.12 69/193969/1
Matthias Sohn [Tue, 7 Jun 2022 09:33:38 +0000 (11:33 +0200)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Fix connection leak for smart http connections

Change-Id: I6caabf4774ccf34706cef846c1087710f67e2ecd

2 years agoMerge branch 'stable-5.10' into stable-5.11 67/193967/2
Matthias Sohn [Tue, 7 Jun 2022 08:50:25 +0000 (10:50 +0200)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Fix connection leak for smart http connections

Change-Id: I3885c6114caed897f762f5ce523d3b27288205b2

2 years agoMerge branch 'stable-5.9' into stable-5.10 66/193966/1
Matthias Sohn [Tue, 7 Jun 2022 08:42:22 +0000 (10:42 +0200)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Fix connection leak for smart http connections

Change-Id: I5e7144b2f5cd850978220c476947001ae2debb8e

2 years agoFix connection leak for smart http connections 39/193939/3
Saša Živkov [Fri, 3 Jun 2022 14:36:43 +0000 (16:36 +0200)]
Fix connection leak for smart http connections

SmartHttpPushConnection: close InputStream and OutputStream after
processing. Wrap IOExceptions which aren't TransportExceptions already
as a TransportException.

Also-By: Matthias Sohn <matthias.sohn@sap.com>
Change-Id: I8e11d899672fc470c390a455dc86367e92ef9076

2 years agoRemove stray files (probes or lock files) created by background threads 79/193379/2
James Z.M. Gao [Thu, 7 Apr 2022 16:29:39 +0000 (00:29 +0800)]
Remove stray files (probes or lock files) created by background threads

NOTE: port back from master branch.

On process exit, it was possible that the filesystem timestamp
resolution measurement left behind .probe files or even a lock file
for the jgit.config.

Ensure the SAVE_RUNNER is shut down when the process exits (via
System.exit() or otherwise). Move lf.lock() into the try-finally
block when saving the config file.

Delete .probe files on JVM shutdown -- they are created in daemon
threads that may terminate abruptly, not executing the "finally"
clause that normally removes these files.

Bug: 579445
Change-Id: Iaee2301eb14e6201406398a90228ad10cfea6098

2 years agoStop initCause throwing in readAdvertisedRefs 50/190250/16
Darius Jokilehto [Fri, 4 Feb 2022 16:13:27 +0000 (16:13 +0000)]
Stop initCause throwing in readAdvertisedRefs

BasePackConnection::readAdvertisedRefsImpl was creating an exception by
calling `noRepository`, and then blindly calling `initCause` on it. As
`noRepository` can be overridden, it's not guaranteed to be missing a
cause.

BasePackPushConnection overrides `noRepository` and initiates a fetch,
which may throw a `NoRemoteRepositoryException` with a cause.

In this case calling `initCause` threw an `IllegalStateException`.

In order to throw the correct exception, we now return the
BasePackPushConnection exception and suppress the one thrown by
BasePackConnection

Bug: 578511
Change-Id: Ic1018b214be1e83d895979ee6c7cbce3f6765f6f

2 years agoMerge branch 'stable-5.12' into stable-5.13 46/189746/1
Matthias Sohn [Tue, 18 Jan 2022 16:51:14 +0000 (17:51 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  UploadPack v2 protocol: Stop negotiation for orphan refs

Change-Id: Ib43068c32d9cb8effe4b873396391dc3c9197a6e

2 years agoMerge branch 'stable-5.11' into stable-5.12 45/189745/1
Matthias Sohn [Tue, 18 Jan 2022 16:49:03 +0000 (17:49 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  UploadPack v2 protocol: Stop negotiation for orphan refs

Change-Id: I5db432bd416cfa8d3dd295bdce63e31d5f160a8a

2 years agoUploadPack v2 protocol: Stop negotiation for orphan refs 87/189087/6
Marcin Czech [Wed, 22 Dec 2021 16:42:36 +0000 (17:42 +0100)]
UploadPack v2 protocol: Stop negotiation for orphan refs

The fetch of a single orphan ref (for example Gerrit meta ref:
refs/changes/21/21/meta) did not stop the negotiation so client
had to advertise all refs. This impacts the fetch performance
on repositories with a large number of refs (for example on
Gerrit repository it takes 20 seconds to fetch meta ref
comparing to 1.2 second to fetch ref with parent).

To avoid this issue UploadPack, used on the server side,
now checks if all `want` refs have parents, if not this
means that client doesn't need any extra objects, hence
the server responds with `ready` and finishes the
negotiation phase.

Bug: 577937
Change-Id: Ia3001b400b415d5cf6aae45e72345ca08d3af058

2 years agoUse slf4j-simple instead of log4j for logging 24/188924/7
Matthias Sohn [Thu, 16 Dec 2021 17:42:45 +0000 (18:42 +0100)]
Use slf4j-simple instead of log4j for logging

JGit uses slf4j-api as logging API.

The libraries
- org.eclipse.jgit.http.test
- org.eclipse.jgit.pgm
- org.eclipse.jgit.ssh.apache.test
- org.eclipse.jgit.test
used the outdated log4j 1.2.15 which is EOL since years.

Since both jgit command line and also the tests don't need sophisticated
logging features replace log4j with the much simpler slf4j-simple log
implementation. The org.slf4j.binding.simple 1.7.30 archive has only
25kB instead of 429kB for log4j 1.2.15

Applications using jgit are free to choose any other log implementation
supporting slf4j API.

Change-Id: I89e85cd3c76e954c3434622510975ce65dc227d4

2 years agoUpdate orbit to R20211213173813 23/188923/6
Matthias Sohn [Mon, 13 Dec 2021 23:07:10 +0000 (00:07 +0100)]
Update orbit to R20211213173813

and update
- com.google.gson to 2.8.8.v20211029-0838
- 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: I3ac39fc8a5df571d2e290241a03668f1e60880b4

2 years agoMerge branch 'stable-5.12' into stable-5.13 06/189206/2
Matthias Sohn [Thu, 30 Dec 2021 23:29:40 +0000 (00:29 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I6a0266cbcaaf18d0d60f0abecb5434fd919c44b7

2 years agoMerge branch 'stable-5.11' into stable-5.12 05/189205/2
Matthias Sohn [Thu, 30 Dec 2021 23:28:53 +0000 (00:28 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I4e241860c2ca50750e22c2761c515c9895688c55

2 years agoMerge branch 'stable-5.10' into stable-5.11 04/189204/2
Matthias Sohn [Thu, 30 Dec 2021 23:26:24 +0000 (00:26 +0100)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: Ie3f2d05aeb1aa04af707cfafef5780349be4d981

2 years agoMerge branch 'stable-5.9' into stable-5.10 03/189203/2
Matthias Sohn [Thu, 30 Dec 2021 23:05:40 +0000 (00:05 +0100)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I4f954c48ad6e8ff18826fdc72d225bff3e3ae2d9

2 years agoMerge branch 'stable-5.8' into stable-5.9 02/189202/2
Matthias Sohn [Thu, 30 Dec 2021 22:58:41 +0000 (23:58 +0100)]
Merge branch 'stable-5.8' into stable-5.9

* stable-5.8:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: Ic97d38fc85daa00297abbfa186f83b779966e7ef

2 years agoMerge branch 'stable-5.7' into stable-5.8 01/189201/2 stable-5.8
Matthias Sohn [Thu, 30 Dec 2021 22:56:32 +0000 (23:56 +0100)]
Merge branch 'stable-5.7' into stable-5.8

* stable-5.7:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: If9cc2f2bae5dbead7a38218828da461540be942e

2 years agoMerge branch 'stable-5.6' into stable-5.7 00/189200/2 stable-5.7
Matthias Sohn [Thu, 30 Dec 2021 22:53:54 +0000 (23:53 +0100)]
Merge branch 'stable-5.6' into stable-5.7

* stable-5.6:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I274d46d73cc896dcfde6e24c69c71f33aaa78d20

2 years agoMerge branch 'stable-5.5' into stable-5.6 99/189199/2 stable-5.6
Matthias Sohn [Thu, 30 Dec 2021 22:51:41 +0000 (23:51 +0100)]
Merge branch 'stable-5.5' into stable-5.6

* stable-5.5:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: If904289feecd1e0d8466c1fb998f160f14d54b61

2 years agoMerge branch 'stable-5.4' into stable-5.5 98/189198/2 stable-5.5
Matthias Sohn [Thu, 30 Dec 2021 22:41:54 +0000 (23:41 +0100)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I84e11bdaa9306e23212dac9d8670557a18d40107

2 years agoMerge branch 'stable-5.3' into stable-5.4 97/189197/2 stable-5.4
Matthias Sohn [Thu, 30 Dec 2021 22:40:21 +0000 (23:40 +0100)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I3d8eb2fa721e1a791db47a2342acc690ced01715

2 years agoMerge branch 'stable-5.2' into stable-5.3 96/189196/2 stable-5.3
Matthias Sohn [Thu, 30 Dec 2021 22:33:06 +0000 (23:33 +0100)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: Ib79c310c5b632e845ba69ce65e739ae0146103ca

2 years agoMerge branch 'stable-5.1' into stable-5.2 95/189195/2 stable-5.2
Matthias Sohn [Thu, 30 Dec 2021 22:18:21 +0000 (23:18 +0100)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Use FileSnapshot without using configs for FileBasedConfig

Change-Id: I17ede8876a0cf231c38cb9652c7bf51553b1e90e

2 years agoUse FileSnapshot without using configs for FileBasedConfig 76/189176/9 stable-5.1
Luca Milanesio [Tue, 28 Dec 2021 23:53:35 +0000 (23:53 +0000)]
Use FileSnapshot without using configs for FileBasedConfig

FileBasedConfig should not rely on auto-detection of
the file-snapshot attribute computation based on config.

The check was already performed when a new FileBasedConfig
is created at L158:

// don't use config in this snapshot to avoid endless recursion
newSnapshot = FileSnapshot.saveNoConfig(getFile());

The check was missing though when the FileBasedConfig is saved
to disk and the new snapshot is obtained from the associated
LockFile.

This change fixes the issue by keeping a non-config based
FileSnapshot also after a FileBasedConfig is saved.

Bug: 577983
Change-Id: Id1e410ba687e683ff2b2643af31e1110b103b356

2 years agoMerge branch 'stable-5.12' into stable-5.13 47/189147/1
Thomas Wolf [Sun, 26 Dec 2021 15:02:51 +0000 (16:02 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I6576872cc0f5dd452252fa6e4526086cdee65c28
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.11' into stable-5.12 46/189146/1
Thomas Wolf [Sun, 26 Dec 2021 15:02:06 +0000 (16:02 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: Ib80336a42e22da729b9db1e573772504cc0a3e77
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.10' into stable-5.11 45/189145/1
Thomas Wolf [Sun, 26 Dec 2021 15:01:08 +0000 (16:01 +0100)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I9e79ea2a0c554a184e4ce3b13e375eac8b7a4ac5
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.9' into stable-5.10 44/189144/1
Thomas Wolf [Sun, 26 Dec 2021 14:58:49 +0000 (15:58 +0100)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I2a84c838a886d1d6383c34f50b418baa743c57b0
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.8' into stable-5.9 43/189143/1
Thomas Wolf [Sun, 26 Dec 2021 14:57:59 +0000 (15:57 +0100)]
Merge branch 'stable-5.8' into stable-5.9

* stable-5.8:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I88a629e571fec5a9820114ebf5765b5d94a276bd
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.7' into stable-5.8 42/189142/1
Thomas Wolf [Sun, 26 Dec 2021 14:56:59 +0000 (15:56 +0100)]
Merge branch 'stable-5.7' into stable-5.8

* stable-5.7:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: Ied786ab5e3c0dd05f701705fce2d4ad85502c4d6
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.6' into stable-5.7 41/189141/1
Thomas Wolf [Sun, 26 Dec 2021 14:55:52 +0000 (15:55 +0100)]
Merge branch 'stable-5.6' into stable-5.7

* stable-5.6:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I454622dae6eb95aedbd858e3b12da72282d36673
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.5' into stable-5.6 40/189140/1
Thomas Wolf [Sun, 26 Dec 2021 14:54:37 +0000 (15:54 +0100)]
Merge branch 'stable-5.5' into stable-5.6

* stable-5.5:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I2622f1d384a88a556ba9d88f0d08a37af69e530c
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.4' into stable-5.5 39/189139/1
Thomas Wolf [Sun, 26 Dec 2021 14:53:38 +0000 (15:53 +0100)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: Ia1665dd92ccc3811a6116f41421a05aca10fc6eb
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.3' into stable-5.4 38/189138/1
Thomas Wolf [Sun, 26 Dec 2021 14:52:23 +0000 (15:52 +0100)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I52a57a17abe60e30e3d7615f8cb4d0c5e6aebd9b
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.2' into stable-5.3 37/189137/1
Thomas Wolf [Sun, 26 Dec 2021 14:51:23 +0000 (15:51 +0100)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: Id37f47a5ef2e3c8329eca30c171941f7e5606a85
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoMerge branch 'stable-5.1' into stable-5.2 36/189136/1
Thomas Wolf [Sun, 26 Dec 2021 14:49:06 +0000 (15:49 +0100)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

Change-Id: I625667c2718ab31ae7df907c3dd6024a933913b8
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoRevert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation" 35/189135/1
Thomas Wolf [Sun, 26 Dec 2021 14:35:30 +0000 (15:35 +0100)]
Revert "RefDirectory.scanRef: Re-use file existence check done in snapshot creation"

This reverts commit f829f5f838e0f9c17373ea6cb3407976a8f395ff.

Using MISSING_FILEKEY as indicator for a non-existing file doesn't work
on Windows.

Bug: 577954
Change-Id: I92102a3d259f6cc0f367096a3213cfa794466817
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
2 years agoTreeRevFilter: fix wrong stop when the given path disappears 38/188938/2
kylezhao [Fri, 12 Nov 2021 06:34:46 +0000 (14:34 +0800)]
TreeRevFilter: fix wrong stop when the given path disappears

When chgs[i] == adds[i], it indicated that a commit added some files
that pList[i] did not have, but didn't mean pList[i] is "empty tree
root".

Follow the example below:

.                           .
└── src                     └── src
    └── d1          ==>          └── d1
        └─ file1                    ├─  file1
                                    └── file2
   c.parents[i]                   c

The variable chg[i] equals to variable add[i],
but commit c.parents[i] is not "empty tree root".

We should add an additional check for no paths matching the filter.

Bug: 577227
Change-Id: I834e9ddd0de86b108b280a1139519ea962913b38
Signed-off-by: kylezhao <kylezhao@tencent.com>
2 years agoMerge branch 'stable-5.12' into stable-5.13 45/188545/1
Matthias Sohn [Sat, 4 Dec 2021 19:58:31 +0000 (20:58 +0100)]
Merge branch 'stable-5.12' into stable-5.13

* stable-5.12:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I9c85b3a774480c4f4b56ecdf5015916349a0ddc0

2 years agoMerge branch 'stable-5.11' into stable-5.12 44/188544/1
Matthias Sohn [Sat, 4 Dec 2021 19:41:39 +0000 (20:41 +0100)]
Merge branch 'stable-5.11' into stable-5.12

* stable-5.11:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I72f39fbe82dd578d71aa2e3ceccebb39a25c4e00

2 years agoMerge branch 'stable-5.10' into stable-5.11 43/188543/1
Matthias Sohn [Sat, 4 Dec 2021 19:26:55 +0000 (20:26 +0100)]
Merge branch 'stable-5.10' into stable-5.11

* stable-5.10:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I84c73e11381c31566a12033db94e9afdcef5b705

2 years agoMerge branch 'stable-5.9' into stable-5.10 42/188542/1
Matthias Sohn [Sat, 4 Dec 2021 18:29:56 +0000 (19:29 +0100)]
Merge branch 'stable-5.9' into stable-5.10

* stable-5.9:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I971745b529ff903ea8bf9c3dbbc746fa09f41041

2 years agoMerge branch 'stable-5.8' into stable-5.9 41/188541/1
Matthias Sohn [Sat, 4 Dec 2021 18:14:56 +0000 (19:14 +0100)]
Merge branch 'stable-5.8' into stable-5.9

* stable-5.8:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I5e7c204c0e4c428df6f3b27ba1fc06326983f27c

2 years agoMerge branch 'stable-5.7' into stable-5.8 40/188540/1
Matthias Sohn [Sat, 4 Dec 2021 17:45:20 +0000 (18:45 +0100)]
Merge branch 'stable-5.7' into stable-5.8

* stable-5.7:
  Add missing @since tags
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot
creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: Ibe46e8479b57a54591ad7bd3cc29bf4a5274e43d

2 years agoAdd missing @since tags 39/188539/1
Matthias Sohn [Sat, 4 Dec 2021 17:34:48 +0000 (18:34 +0100)]
Add missing @since tags

Change-Id: Iaeca1d6154c1383ebe27b723e8814e262328eb48

2 years agoMerge branch 'stable-5.6' into stable-5.7 38/188538/1
Matthias Sohn [Sat, 4 Dec 2021 17:12:11 +0000 (18:12 +0100)]
Merge branch 'stable-5.6' into stable-5.7

* stable-5.6:
  Add missing @since tag
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I53e6cb4b3a34b32d964e486c1ff3d130eed6e406

2 years agoAdd missing @since tag 37/188537/1
Matthias Sohn [Sat, 4 Dec 2021 17:07:09 +0000 (18:07 +0100)]
Add missing @since tag

Change-Id: I665c860696b6981dfec87a60c4eb95060a02436f

2 years agoMerge branch 'stable-5.5' into stable-5.6 36/188536/1
Matthias Sohn [Sat, 4 Dec 2021 16:52:04 +0000 (17:52 +0100)]
Merge branch 'stable-5.5' into stable-5.6

* stable-5.5:
  Add missing @since tags
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I007e92c12fde8d765b75f103e9d530aa0834b7d7

2 years agoAdd missing @since tags 35/188535/1
Matthias Sohn [Sat, 4 Dec 2021 16:47:48 +0000 (17:47 +0100)]
Add missing @since tags

Change-Id: Id21e626201363dd3d0358bd709765e7fd07a0cbf

2 years agoMerge branch 'stable-5.4' into stable-5.5 34/188534/1
Matthias Sohn [Sat, 4 Dec 2021 08:48:19 +0000 (09:48 +0100)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I5ce55c6c152a59602fef9fb08c16dedf666444e2

2 years agoMerge branch 'stable-5.3' into stable-5.4 27/188527/1
Matthias Sohn [Sat, 4 Dec 2021 01:16:08 +0000 (02:16 +0100)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: I0e80612c8ddb934466105312f9107e91d581de0b

2 years agoMerge branch 'stable-5.2' into stable-5.3 26/188526/1
Matthias Sohn [Sat, 4 Dec 2021 00:58:53 +0000 (01:58 +0100)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Remove unused import in ApacheSshTest
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: Id989365446cb55b9188e02e6e1f8cbc8ab71071c

2 years agoRemove unused import in ApacheSshTest 25/188525/1
Matthias Sohn [Sat, 4 Dec 2021 00:40:36 +0000 (01:40 +0100)]
Remove unused import in ApacheSshTest

Change-Id: I55ebddf232369389e717bbf8707f6e785de14bce

2 years agoMerge branch 'stable-5.1' into stable-5.2 24/188524/1
Matthias Sohn [Fri, 3 Dec 2021 23:43:05 +0000 (00:43 +0100)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Update maven plugins
  Ignore missing javadoc in test bundles
  storage: file: De-duplicate File.exists()+File.isFile()
  RefDirectory.scanRef: Re-use file existence check done in snapshot creation
  FileSnapshot: Lazy load file store attributes cache
  Update eclipse-jarsigner-plugin to 1.3.2
  Fix p2 repository URLs

Change-Id: If3ad2cfb6c341b0ff5c2120a5a1646f6368d86e7

2 years agoUpdate maven plugins 20/188520/1
Matthias Sohn [Fri, 3 Dec 2021 21:45:05 +0000 (22:45 +0100)]
Update maven plugins

- build-helper-maven-plugin to 3.2.0
- jacoco-maven-plugin to 0.8.7
- maven-antrun-plugin to 3.0.0
- maven-dependency-plugin to 3.2.0
- maven-enforcer-plugin to 3.0.0
- maven-jar-plugin to 3.2.0
- maven-javadoc-plugin to 3.3.1
- maven-jxr-plugin to 3.1.1
- maven-pmd-plugin to 3.15.0
- maven-project-info-reports-plugin to 3.1.2
- maven-resources-plugin to 3.2.0
- maven-shade-plugin to 3.2.4
- maven-site-plugin to 3.9.1
- maven-source-plugin to 3.2.1
- maven-surefire-plugin to 3.0.0-M5
- spotbugs-maven-plugin to 4.3.0
- tycho and tycho-extras to 1.7.0

Change-Id: I7738fbfd7db60ddbeb372efcb4c72c71112ac231

2 years agoIgnore missing javadoc in test bundles 19/188519/1
Matthias Sohn [Thu, 24 Jun 2021 21:13:51 +0000 (23:13 +0200)]
Ignore missing javadoc in test bundles

Change-Id: I83ed20823dc6b22ff48c2a554acb2f7d3b6067b7
(cherry picked from commit 12f39c26b09bc3ebf1dd0216f56c37c808a53034)

2 years agostorage: file: De-duplicate File.exists()+File.isFile() 13/188513/2
Nasser Grainawi [Fri, 3 Dec 2021 17:05:53 +0000 (10:05 -0700)]
storage: file: De-duplicate File.exists()+File.isFile()

File.isFile() [1] checks if the file exists and is a normal file.

[1] https://docs.oracle.com/javase/8/docs/api/java/io/File.html#isFile--

Change-Id: I0a883f2482ecc5ac58b270351b416742b568eb68
Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
2 years agoRefDirectory.scanRef: Re-use file existence check done in snapshot creation 90/188290/2
Kaushik Lingarkar [Mon, 29 Nov 2021 20:14:56 +0000 (12:14 -0800)]
RefDirectory.scanRef: Re-use file existence check done in snapshot creation

Return immediately in scanRef if the loose ref was identified as
missing when a snapshot was attempted for the ref. This will help
performance of scanRef when the ref is packed but has a corresponding
empty dir in 'refs/'.

For example, consider the case where we create 50k sharded refs in
a new namespace called 'new-refs' using an atomic 'BatchRefUpdate'.
The refs are named like 'refs/new-refs/01/1/1', 'refs/new-refs/01/1/2',
'refs/new-refs/01/1/3' and so on. After the refs are created, the
'new-refs' namespace looks like below:

$ find refs/new-refs -type f | wc -l
0

$ find refs/new-refs -type d | wc -l
5101

At this point, an 'exactRef' call on each of the 50k refs without
this change takes ~2.5s, where as with this change it takes ~1.5s.

Change-Id: I926bc41b9ae89a1a792b1b5ec9a17b05271c906b
Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
2 years agoFileSnapshot: Lazy load file store attributes cache 10/187910/9
Kaushik Lingarkar [Thu, 18 Nov 2021 21:12:17 +0000 (13:12 -0800)]
FileSnapshot: Lazy load file store attributes cache

Doing a getFileStoreAttributes call even when the file doesn't
exist is unnecessary. This call is particularly slow on some
filesystems. Instead, do it only when the file exists and load
the appropriate cache.

This update can help speed up RefDirectory.exactRef when the ref
is packed, but has a corresponding empty dir for it under 'refs/'.
This scenario can happen when an atomic 'BatchRefUpdate' creates
new sharded refs.

For example, consider the case where we create 50k sharded refs in
a new namespace called 'new-refs' using an atomic 'BatchRefUpdate'.
The refs are named like 'refs/new-refs/01/1/1', 'refs/new-refs/01/1/2',
'refs/new-refs/01/1/3' and so on. After the refs are created, the
'new-refs' namespace looks like below:

$ find refs/new-refs -type f | wc -l
0

$ find refs/new-refs -type d | wc -l
5101

At this point, an 'exactRef' call on each of the 50k refs without
this change takes ~30s, where as with this change it takes ~2.5s.

Change-Id: I4a5d4c6a652dbeed1f4bc3b4f2b2f1416f7ca0e7
Signed-off-by: Kaushik Lingarkar <quic_kaushikl@quicinc.com>
2 years agoUpdate eclipse-jarsigner-plugin to 1.3.2 56/188456/1
Matthias Sohn [Mon, 20 Sep 2021 22:18:03 +0000 (00:18 +0200)]
Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: Id5d05d96c392913de7b4451421c2ffb7b63ab83f
(cherry picked from commit c70c0acb4752f00672e3b856539587e4977bfaea)

2 years agoFix p2 repository URLs 49/188449/1
Matthias Sohn [Thu, 2 Dec 2021 08:56:07 +0000 (09:56 +0100)]
Fix p2 repository URLs

- the old jetty releases were moved to the archive server
- use https
- use eclipse 4.9 release repository

Change-Id: I2ca20dd828a9272a383e166e6ad82390415891cf

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 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>
2 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)

2 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>
2 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>
2 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>
2 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)

2 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

2 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

2 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

2 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

2 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 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 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 agoMerge branch 'stable-5.8' into stable-5.9 99/186299/1
Matthias Sohn [Thu, 7 Oct 2021 22:36:14 +0000 (00:36 +0200)]
Merge branch 'stable-5.8' into stable-5.9

* stable-5.8:
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: I9e66ef90dc9a65bac47b35705d679bf992bd72b9

3 years agoMerge branch 'stable-5.7' into stable-5.8 97/186297/1
Matthias Sohn [Thu, 7 Oct 2021 22:33:33 +0000 (00:33 +0200)]
Merge branch 'stable-5.7' into stable-5.8

* stable-5.7:
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: I88c47ff57f4829baec5b19aad3d8d6bd21f31a86

3 years agoMerge branch 'stable-5.6' into stable-5.7 96/186296/1
Matthias Sohn [Thu, 7 Oct 2021 22:18:42 +0000 (00:18 +0200)]
Merge branch 'stable-5.6' into stable-5.7

* stable-5.6:
  reftable: drop code for truncated reads
  reftable: pass on invalid object ID in conversion
  Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: I1c18f5f435f4a4a86e0548a310dbfc74191e1ed5

3 years agoreftable: drop code for truncated reads 02/185902/4
Han-Wen Nienhuys [Tue, 28 Sep 2021 18:05:03 +0000 (20:05 +0200)]
reftable: drop code for truncated reads

The reftable format is a block based format, but allows for variably
sized blocks. This obviously happens for reflog blocks (which are zlib
compressed), but is also accepted for index blocks: In the spec, this
is motivated as

     To achieve constant O(1) disk seeks for lookups the index must be
     a single level, which is permitted to exceed the file's
     configured block size, but not the format's max block size of
     15.99 MiB.

Hence, when parsing a block, one cannot be sure of its exact size:
after reading a default-size block (eg. 4kb), the block header may
state that the block is in fact larger.

Before, the code would mark the block as `truncated`, noting

     // Its OK during sequential scan for an index block to have been
     // partially read and be truncated in-memory. This happens when
     // the index block is larger than the file's blockSize. Caller
     // will break out of its scan loop once it sees the blockType.

This looks like either

* a remnant of never-implemented functionality. There is no reason to
  ever sequentially scan an index block.

* alluding to sequential scan of the data blocks before the index
  blocks (eg. scanning refs, which ends when we find the first ref index
  block, and we can then ignore the index block).

This comment is followed by code that populates the
restartTbl/restartCnt fields relative to the (possibly truncated)
buffer. If the buffer is truncated, this essentially reads garbage,
leading to OOB array access when using the index block.

Fix this by dropping the truncated logic and issuing a second read if
the first read was short.

Add a test.

We have never observed this failure scenario at Google. We use 64kb
blocksize, which requires us to need fewer index entries. The reftable
spec mentions an Android repo of size 36M. With 64kb blocks, that's
just 562 index entries. Even with historical growth, we are long from
requiring an index whose size exceeds a single block.

When adding the analogous test for seeking refs, there was no failure.
This points to another possibility which is that the code tries to
avoid writing large index blocks for refs.

I did not investigate further which one it is.

Fixes https://bugs.eclipse.org/bugs/show_bug.cgi?id=576250

Bug: 576250
Change-Id: I41ec21fac9e526ef57b3d6fb57b988bd353ee338
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
3 years agoreftable: pass on invalid object ID in conversion 56/185856/2
Han-Wen Nienhuys [Mon, 27 Sep 2021 14:07:27 +0000 (16:07 +0200)]
reftable: pass on invalid object ID in conversion

Before, while trying to determine if an object ID was a tag or not,
the reftable conversion would yield an exception.

Change-Id: I3688a0ffa9e774ba27f320e3840ff8cada21ecf0

3 years agoUpdate eclipse-jarsigner-plugin to 1.3.2 54/185754/1
Matthias Sohn [Mon, 20 Sep 2021 22:18:03 +0000 (00:18 +0200)]
Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: Id5d05d96c392913de7b4451421c2ffb7b63ab83f
(cherry picked from commit c70c0acb4752f00672e3b856539587e4977bfaea)

3 years agoFix running benchmarks from bazel 55/185855/2
Matthias Sohn [Mon, 27 Sep 2021 13:53:30 +0000 (15:53 +0200)]
Fix running benchmarks from bazel

add missing dependency to
- javaewah
- slf4j-api

Change-Id: I28dc982791b32f10d20b2fd0671aa8d2514a0fb3

3 years agoUpdate eclipse-jarsigner-plugin to 1.3.2 43/185643/2
Matthias Sohn [Mon, 20 Sep 2021 22:18:03 +0000 (00:18 +0200)]
Update eclipse-jarsigner-plugin to 1.3.2

Change-Id: Id5d05d96c392913de7b4451421c2ffb7b63ab83f

3 years agoAdd org.bouncycastle.bcutil to p2 repository 11/185611/1
Matthias Sohn [Mon, 20 Sep 2021 14:41:17 +0000 (16:41 +0200)]
Add org.bouncycastle.bcutil to p2 repository

Bug: 575621
Change-Id: I57de7af9f9b236cac570d9c10c3d1c3886720868

3 years agoPrepare 5.13.1-SNAPSHOT builds 70/185170/1
Matthias Sohn [Wed, 8 Sep 2021 18:24:36 +0000 (20:24 +0200)]
Prepare 5.13.1-SNAPSHOT builds

Change-Id: Ib2f689d8d13eab022da5b5e83d6d6bebc1bb81d3