]> source.dussan.org Git - jgit.git/log
jgit.git
5 years agoBazel: Reuse version from .bazelversion for minimum used version check 66/149966/1
David Ostrovsky [Mon, 23 Sep 2019 07:20:41 +0000 (09:20 +0200)]
Bazel: Reuse version from .bazelversion for minimum used version check

Bazel is still supported in addition to the Bazel wrapper Bazelisk,
that is recommended, as it would automatically switch to the right
Bazel version on stable branches (like it was the case with Buck).

That why minimum used Bazel version check is still needed in WORKSPACE
file in addition to the .bazelversion used by Bazelisk. That means that
currently, bazel version is maintained in two places:

* .bazelversion
* WORKSPACE

This change introduces the repository rule to read the bazel version
from the .bazelversion file and perform the minimum version check.

Change-Id: Ib9c1382935ded7bcd322ed0122838c40ba2faa6c
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
5 years agodfs: rename ReftableStack to DfsReftableStack 66/146566/28
Han-Wen Nienhuys [Wed, 24 Jul 2019 15:26:44 +0000 (17:26 +0200)]
dfs: rename ReftableStack to DfsReftableStack

The functionality in ReftableStack is specific to DFS.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: If6003d104b1ecb0f3ca7e9c3815b233fa0abf077

5 years agoreftable: add maxUpdateIndex to Reftable 70/149170/9
Han-Wen Nienhuys [Sun, 8 Sep 2019 16:02:05 +0000 (18:02 +0200)]
reftable: add maxUpdateIndex to Reftable

This makes maxUpdateIndex() available in MergedReftable, so we can
know generically at which index to create the next reftable in a
stack.

Change-Id: Ia2314bc57c8b5dd7e69d5e61096fdce1d35abd11
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
5 years agoUpgrade ecj plugin to 3.19.0 39/149839/1
David Pursehouse [Thu, 19 Sep 2019 12:43:18 +0000 (21:43 +0900)]
Upgrade ecj plugin to 3.19.0

Change-Id: I36854a4e27ad3b0fc6c2ac145d78df582bca3988
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUploadPackReachabilityTest: Use assertThrows instead of thrown 06/149806/1
Ivan Frade [Wed, 18 Sep 2019 21:38:37 +0000 (14:38 -0700)]
UploadPackReachabilityTest: Use assertThrows instead of thrown

In https://git.eclipse.org/r/c/144009/ UploadPack tests moved from
thrown to assertThrows, but newly introduced tests are still using
the thrown.

Update test so all of them use assertThrows.

Change-Id: I0ff19a6f8ba9e978d8ffc7a912c0572d9f00c7fa
Signed-off-by: Ivan Frade <ifrade@google.com>
5 years agoRequestValidatorTestCase: Tests for the request validators 22/141922/4
Ivan Frade [Thu, 9 May 2019 23:19:06 +0000 (16:19 -0700)]
RequestValidatorTestCase: Tests for the request validators

Make a general test with all the cases, like request
advertised/unadvertised tips, reachable/unreachable from those tips,
commits/blobs.

Implement specific validator tests as subclasses. Each test provides the
validator instance and tells what cases are valid.

Change-Id: I7f961fcc05f7fabbeae1ba8ff73d99072ce8fc72
Signed-off-by: Ivan Frade <ifrade@google.com>
5 years agoUploadPackTest: Move "reachability" tests to its own file 21/141921/3
Ivan Frade [Thu, 9 May 2019 23:15:24 +0000 (16:15 -0700)]
UploadPackTest: Move "reachability" tests to its own file

UploadPackTest is already too long and it is covering too many aspects
of UploadPack. This makes difficult to see what is tests and if all
cases are covered.

Move the reachability-related tests to its own file. This moves also an
auxiliary function, reducing the length of UploadPack. Complete also the
coverage, adding combinations of bitmap availability/commits or
blobs/reachable or not.

Change-Id: Id5cfc9d0118d997da30e3886c91db996a86250fc
Signed-off-by: Ivan Frade <ifrade@google.com>
5 years agoMerge branch 'stable-5.5' 21/149621/1
Matthias Sohn [Mon, 16 Sep 2019 22:42:26 +0000 (00:42 +0200)]
Merge branch 'stable-5.5'

* stable-5.5:
  WorkingTreeIterator: handle different timestamp resolutions

Change-Id: I61df7392d8826ab526c39da2a8718723a1cc602a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.4' into stable-5.5 20/149620/1
Matthias Sohn [Mon, 16 Sep 2019 22:41:28 +0000 (00:41 +0200)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  WorkingTreeIterator: handle different timestamp resolutions

Change-Id: I83384336e0d766237d0579152673c9eefc9edd65
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.3' into stable-5.4 19/149619/1
Matthias Sohn [Mon, 16 Sep 2019 22:40:42 +0000 (00:40 +0200)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  WorkingTreeIterator: handle different timestamp resolutions

Change-Id: I87afe29578b0270c79bc54c4e2cfda579c329237
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.2' into stable-5.3 18/149618/1
Matthias Sohn [Mon, 16 Sep 2019 22:39:45 +0000 (00:39 +0200)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  WorkingTreeIterator: handle different timestamp resolutions

Change-Id: Ia2a38949089a66abb5f4f1cd41717d2ae8d0eb5b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 17/149617/1
Matthias Sohn [Mon, 16 Sep 2019 22:38:16 +0000 (00:38 +0200)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  WorkingTreeIterator: handle different timestamp resolutions

Change-Id: Ic33ebec963af03a182dfe8f46486f5e8d00c0694
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoWorkingTreeIterator: handle different timestamp resolutions 40/149440/6
Thomas Wolf [Thu, 12 Sep 2019 19:05:19 +0000 (21:05 +0200)]
WorkingTreeIterator: handle different timestamp resolutions

Older JGit stored only milliseconds timestamps in the index. Newer
JGit may get finer timestamps from the file system. This leads to
slow index diffs when a new JGit runs against an index produced
by older JGit because many timestamps will differ and JGit will
then do many content checks. See [1].

Handle this migration case by only comparing milliseconds if the
index entry has only millisecond precision.

The inverse may also occur; also compare only milliseconds if the
file timestamp has only millisecond precision.

Do the same also for microsecond resolution. On Windows, NTFS may
provide 100ns resolution and may be used by external programs writing
the index, but Java's WindowsFileAttributes may provide only
microseconds.

File timestamp precision in Java depends not only on the Java APIs
used by different JGit versions but may also change when running the
same Java code on different VMs. And of course the resolution may
vary among operating and file systems. Moreover, timestamp precision
in the index depends on the program that wrote the index. Canonical
git may use a different resolution, maybe even different between git
versions.

[1] https://www.eclipse.org/forums/index.php/t/1100344/

Change-Id: Idfd08606c883cb98787b2138f9baf0cc89a57b56
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoUpgrade eclipse-jarsigner-plugin to 1.1.7 06/147406/2
David Pursehouse [Sat, 10 Aug 2019 02:59:34 +0000 (11:59 +0900)]
Upgrade eclipse-jarsigner-plugin to 1.1.7

Change-Id: I1ed3a3a09b63eece30bba90b76579797aa4f589d
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoRequire Maven version 3.6.2 56/149456/1
David Pursehouse [Fri, 13 Sep 2019 08:03:23 +0000 (17:03 +0900)]
Require Maven version 3.6.2

Change-Id: I3acfe4be7a427eff0eb057a2e22253030bb0e910
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoRemove an old work-around for core.autocrlf = input 90/149390/3
Thomas Wolf [Wed, 11 Sep 2019 19:55:53 +0000 (21:55 +0200)]
Remove an old work-around for core.autocrlf = input

The removed code was trying to avoid mistakenly reporting differences
when core.autocrlf was set to "input" but a file had already been
committed with CR-LF. It did that by running the blob from the cache
through a CRLF-to-LF filter because older JGit would also run the file
from the working tree through such a filter.

The real fix for this case was done in commit 60cf85a. Since then files
are not normalized if they have already been committed with CR-LF and
this old fix attempt from bug 372834 is no longer needed.

Change-Id: Ib4facc153d81325cb48b4ee956a596b423f36241
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoMerge "Merge branch 'stable-5.5'"
David Pursehouse [Thu, 12 Sep 2019 00:53:11 +0000 (20:53 -0400)]
Merge "Merge branch 'stable-5.5'"

5 years agoMerge branch 'stable-5.5' 82/149382/1
Matthias Sohn [Wed, 11 Sep 2019 20:18:51 +0000 (22:18 +0200)]
Merge branch 'stable-5.5'

* stable-5.5:
  Prepare 5.5.1-SNAPSHOT builds
  JGit v5.5.0.201909110433-r
  Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL

Change-Id: I113ce255739786623f7e101dc293b9a769abeff0
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agodfs: use ReftableConfig() constructor in DfsReftableDatabase 65/146565/23
Han-Wen Nienhuys [Wed, 24 Jul 2019 15:22:43 +0000 (17:22 +0200)]
dfs: use ReftableConfig() constructor in DfsReftableDatabase

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I756f086fccaba8e77db516160c14708f97519f93

5 years agodfs: use RefDatabase API for exactRef in ReftableBatchRefUpdate 47/146447/25
Han-Wen Nienhuys [Sun, 21 Jul 2019 20:24:56 +0000 (22:24 +0200)]
dfs: use RefDatabase API for exactRef in ReftableBatchRefUpdate

This removes one use of DFS specific code in this class.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I3ef6a4b98357cc6dc480892244ddc51d2fd751a2

5 years agoreftable: add OutputStream argument to ReftableWriter constructor 58/148358/10
Han-Wen Nienhuys [Mon, 26 Aug 2019 14:38:39 +0000 (16:38 +0200)]
reftable: add OutputStream argument to ReftableWriter constructor

This lets us write reftables generically with functions that take
just ReftableWriter argument

Change-Id: I7285951f62f9bd4c78e8f0de194c077d51fa4e51
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
5 years agoreftable: read file footer in ReftableReader#allRefs 69/149169/5
Han-Wen Nienhuys [Mon, 9 Sep 2019 13:07:25 +0000 (15:07 +0200)]
reftable: read file footer in ReftableReader#allRefs

allRefs determined the end of the ref block without accounting for
index or log blocks. This could cause other blocks to be interpreted
as ref blocks, leading to "invalid block" error messages.

Change-Id: I7b9323e7d5e0e7d64535b3ec1efd576aed1e9870
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
5 years agoreftable: add ReftableReflogReader 65/147565/20
Han-Wen Nienhuys [Mon, 12 Aug 2019 17:04:07 +0000 (19:04 +0200)]
reftable: add ReftableReflogReader

Change-Id: Iac2c4ac5e3aad0fa37157ed8866f1987d80268d6
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
5 years agoPrepare 5.5.1-SNAPSHOT builds 51/149351/1
Matthias Sohn [Wed, 11 Sep 2019 09:46:58 +0000 (11:46 +0200)]
Prepare 5.5.1-SNAPSHOT builds

Change-Id: Iaf929168770dfef54ce2a7bfcbee9b87c450ca8a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v5.5.0.201909110433-r 30/149330/1 v5.5.0.201909110433-r
Matthias Sohn [Wed, 11 Sep 2019 08:31:38 +0000 (10:31 +0200)]
JGit v5.5.0.201909110433-r

Change-Id: I5715730ac47d32462f235c2f50581bf1579d46b9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.4' into stable-5.5 92/149292/2
Matthias Sohn [Tue, 10 Sep 2019 20:03:06 +0000 (22:03 +0200)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL

Change-Id: Ibdda7687da015b17cdca67427202766fe102fee1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.3' into stable-5.4 99/149299/1
Matthias Sohn [Tue, 10 Sep 2019 19:27:06 +0000 (21:27 +0200)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL

Change-Id: Ie8447fc28b03bfc918cee0cc2162a2aa3585f3ea
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.2' into stable-5.3 90/149290/1
Matthias Sohn [Tue, 10 Sep 2019 19:26:31 +0000 (21:26 +0200)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL

Change-Id: I57093dfef181645088767471159c204c50961c3a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 89/149289/1
Matthias Sohn [Tue, 10 Sep 2019 19:25:45 +0000 (21:25 +0200)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL

Change-Id: Ic4ee37fb36f61dc7707391f768bf78a33094bfd3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoFix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL 66/149266/1
Matthias Sohn [Tue, 10 Sep 2019 14:08:45 +0000 (16:08 +0200)]
Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL

If CheckStat is MINIMAL or timestamps have no nanosecond part
WorkingTreeIterator.compareMetaData only checks the second part of
timestamps and ignores nanoseconds which may have ended up in the index
by using native git.

If

fileLastModified.getEpochSecond() == cacheLastModified.getEpochSecond()

we currently proceed comparing fileLastModified and cacheLastModified
with full precision which is wrong since we determined that we detected
reduced timestamp resolution.

Fix this and also handle smudged index entries for CheckStat.MINIMAL.

Change-Id: I6149885903ac63d79b42d234cc02aa4e19578f3c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.5' 07/149107/5
Matthias Sohn [Sun, 8 Sep 2019 15:36:59 +0000 (17:36 +0200)]
Merge branch 'stable-5.5'

* stable-5.5:
  bazel: fix running http tests
  Set parameter name in parameterized http tests
  Format BUILD files with buildifier
  Format BUILD files with buildifier
  [error prone] Suppress NonAtomicVolatileUpdate in SimpleLruCache
  Bazel: Format BUILD files with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Fix warning about deprecated lib.bzl
  Format lib/BUILD with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Bump minimum supported version to 0.29.0
  Bazel: Bump skylib library version to 0.8.0
  Use bazelisk to switch between used bazel version
  Bazel: Require minimum bazel version 0.17.1
  Fix wrong placeholder index in error message packInaccessible
  JGitText: Remove unused externalized strings
  RepoText: Remove unused externalized string
  CLI: Remove unused externalized strings

Change-Id: Idb0848dd33a76328b24908dc86db335cca742a1c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.4' into stable-5.5 06/149106/6
Matthias Sohn [Sun, 8 Sep 2019 15:35:14 +0000 (17:35 +0200)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Format BUILD files with buildifier
  Format BUILD files with buildifier
  [error prone] Suppress NonAtomicVolatileUpdate in SimpleLruCache
  Bazel: Format BUILD files with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Fix warning about deprecated lib.bzl
  Format lib/BUILD with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Bump minimum supported version to 0.29.0
  Bazel: Bump skylib library version to 0.8.0
  Use bazelisk to switch between used bazel version
  Bazel: Require minimum bazel version 0.17.1
  Fix wrong placeholder index in error message packInaccessible
  JGitText: Remove unused externalized strings
  RepoText: Remove unused externalized string
  CLI: Remove unused externalized strings

Change-Id: Idf3abd80ad3b00188f655e638d9908228770911f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agobazel: fix running http tests 21/149121/5
Matthias Sohn [Sun, 8 Sep 2019 11:34:21 +0000 (13:34 +0200)]
bazel: fix running http tests

Other than Maven bazel seems unable to cope with abstract
AllFactoriesHttpTestCase having no test methods, hence tag this class
with @Ignore.

Change-Id: I9dfe43f882ad073b284648e24844b51877d87776
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoSet parameter name in parameterized http tests 20/149120/2
Matthias Sohn [Sun, 8 Sep 2019 10:34:27 +0000 (12:34 +0200)]
Set parameter name in parameterized http tests

This shows the class name of the HTTP factory used in each test run.

Change-Id: I7c1df20f0e138dc7e3120fe87e80d40ab17dd8c8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.3' into stable-5.4 26/149126/1
Matthias Sohn [Sun, 8 Sep 2019 15:10:52 +0000 (17:10 +0200)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Format BUILD files with buildifier

Change-Id: Iaf15196f31ec839fed4211d099bed991b4e5e9de
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.2' into stable-5.3 25/149125/1
Matthias Sohn [Sun, 8 Sep 2019 15:10:03 +0000 (17:10 +0200)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Format BUILD files with buildifier

Change-Id: I9281a953a38dad0df7e5a2d6d7a11d4597513aa1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 24/149124/1
Matthias Sohn [Sun, 8 Sep 2019 15:08:39 +0000 (17:08 +0200)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Format BUILD files with buildifier

Change-Id: I5a8413470fd0fbb6db3ca553f455b3e3dc10ab33
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoFormat BUILD files with buildifier 23/149123/1
David Pursehouse [Sun, 8 Sep 2019 13:30:19 +0000 (22:30 +0900)]
Format BUILD files with buildifier

Using buildifier from master branch and the command:

$ buildifier -r -lint fix -warnings all .

Change-Id: I19c8ff183081093cb73bed7221a78a91b6cba4dc
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoMerge branch 'stable-5.3' into stable-5.4 05/149105/4
Matthias Sohn [Sun, 8 Sep 2019 13:05:19 +0000 (15:05 +0200)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Format BUILD files with buildifier
  [error prone] Suppress NonAtomicVolatileUpdate in SimpleLruCache
  Bazel: Format BUILD files with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Fix warning about deprecated lib.bzl
  Format lib/BUILD with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Bump minimum supported version to 0.29.0
  Bazel: Bump skylib library version to 0.8.0
  Use bazelisk to switch between used bazel version
  Bazel: Require minimum bazel version 0.17.1
  Fix wrong placeholder index in error message packInaccessible
  JGitText: Remove unused externalized strings
  RepoText: Remove unused externalized string
  CLI: Remove unused externalized strings

Change-Id: Iaea77a89fcd821df5dbb24f5e3e39e6d1dfc0bd4
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoFormat BUILD files with buildifier 16/149116/2
Matthias Sohn [Sun, 8 Sep 2019 12:59:29 +0000 (14:59 +0200)]
Format BUILD files with buildifier

Using buildifier from master branch and the command:
$ buildifier -r -lint fix -warnings all .

Change-Id: I52a18c09a1f192e2141f4156f9c1aabbbdbc910a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.2' into stable-5.3 02/149102/5
Matthias Sohn [Sun, 8 Sep 2019 09:17:32 +0000 (11:17 +0200)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  [error prone] Suppress NonAtomicVolatileUpdate in SimpleLruCache
  Bazel: Format BUILD files with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Fix warning about deprecated lib.bzl
  Format lib/BUILD with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Bump minimum supported version to 0.29.0
  Bazel: Bump skylib library version to 0.8.0
  Use bazelisk to switch between used bazel version
  Bazel: Require minimum bazel version 0.17.1
  Fix wrong placeholder index in error message packInaccessible
  JGitText: Remove unused externalized strings
  RepoText: Remove unused externalized string
  CLI: Remove unused externalized strings

Change-Id: I0d8b7f79177a20dc00c89e2cf0005eb3d3039532
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years ago[error prone] Suppress NonAtomicVolatileUpdate in SimpleLruCache 03/149103/5
Matthias Sohn [Sat, 7 Sep 2019 09:38:58 +0000 (11:38 +0200)]
[error prone] Suppress NonAtomicVolatileUpdate in SimpleLruCache

We don't need to update time atomically since it's only used to order
cache entries in LRU order.

Change-Id: I756fa6d90b180c519bf52925f134763744f2c1f1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoBazel: Format BUILD files with buildifier 14/149114/1
David Pursehouse [Sun, 8 Sep 2019 01:09:07 +0000 (10:09 +0900)]
Bazel: Format BUILD files with buildifier

Change-Id: I8b4abf67fba592be42b2b5b029fa0e972d746dcb
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoBazel: Add fixes for --incompatible_load_java_rules_from_bzl 13/149113/1
David Pursehouse [Sun, 8 Sep 2019 01:08:39 +0000 (10:08 +0900)]
Bazel: Add fixes for --incompatible_load_java_rules_from_bzl

Change-Id: Ifc47ae22209fdb7a5d7bede4da002640ed26a43a
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 01/149101/2
Matthias Sohn [Sat, 7 Sep 2019 09:07:21 +0000 (11:07 +0200)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Bazel: Fix warning about deprecated lib.bzl
  Format lib/BUILD with buildifier
  Bazel: Add fixes for --incompatible_load_java_rules_from_bzl
  Bazel: Bump minimum supported version to 0.29.0
  Bazel: Bump skylib library version to 0.8.0
  Use bazelisk to switch between used bazel version
  Bazel: Require minimum bazel version 0.17.1
  Fix wrong placeholder index in error message packInaccessible
  JGitText: Remove unused externalized strings
  RepoText: Remove unused externalized string
  CLI: Remove unused externalized strings

Change-Id: Iea37a8e39e9d4872dc607c9222dcf191ce4e4757
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoBazel: Fix warning about deprecated lib.bzl 98/149098/3
David Pursehouse [Sat, 7 Sep 2019 06:28:32 +0000 (15:28 +0900)]
Bazel: Fix warning about deprecated lib.bzl

Change-Id: Ifdbaaf9ec020a621070eea351f791a819d554012
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoFormat lib/BUILD with buildifier 85/149085/4
David Pursehouse [Sat, 7 Sep 2019 00:32:19 +0000 (09:32 +0900)]
Format lib/BUILD with buildifier

Change-Id: I4f0ad64371b160b67797f49b9fde521e5dea9396
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoBazel: Add fixes for --incompatible_load_java_rules_from_bzl 33/148933/7
David Pursehouse [Thu, 5 Sep 2019 00:46:59 +0000 (09:46 +0900)]
Bazel: Add fixes for --incompatible_load_java_rules_from_bzl

Change-Id: I24746335db132bf20f400cb3db400737596d4542
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoBazel: Bump minimum supported version to 0.29.0 96/148996/5
David Ostrovsky [Thu, 5 Sep 2019 20:07:46 +0000 (22:07 +0200)]
Bazel: Bump minimum supported version to 0.29.0

Change-Id: I069e56deb964624791bb0aa3ae095629adfe3bbb
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
5 years agoBazel: Bump skylib library version to 0.8.0 97/149097/3
David Ostrovsky [Sat, 8 Jun 2019 15:31:33 +0000 (17:31 +0200)]
Bazel: Bump skylib library version to 0.8.0

Change-Id: I2089899c9f197b2c93b93390fdd55f6fe11e5ce4
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
5 years agoUse bazelisk to switch between used bazel version 99/149099/2
David Ostrovsky [Sat, 8 Jun 2019 15:33:28 +0000 (17:33 +0200)]
Use bazelisk to switch between used bazel version

Bazelisk is utility to switch to the right Bazel version, that we
used to have with Buck build tool: [1].

Bazelisk will download the right Bazel version only once and will use
it in subsequent calls:

  $ bazelisk build :release
  2019/06/06 16:22:15 Downloading \
  https://releases.bazel.build/0.26.1/release/bazel-0.26.1-linux-x86_64...

Bazelisk is storing the binaries in user's cache directory: [2], e.g.
on Linux OS:

  $ ls -1 ~/.cache/bazelisk/bin
  bazel-0.26.1-linux-x86_64

* [1] https://github.com/bazelbuild/bazelisk
* [2] https://golang.org/pkg/os/#UserCacheDir

Change-Id: Ia9180fb75f8cc17a0a0232622cf33a13bfad6b60
Signed-off-by: David Ostrovsky <david@ostrovsky.org>
5 years agoBazel: Require minimum bazel version 0.17.1 96/149096/3
David Pursehouse [Wed, 10 Oct 2018 01:53:35 +0000 (10:53 +0900)]
Bazel: Require minimum bazel version 0.17.1

Check the bazel version using the checker from bazel_skylib, and
require at least version 0.17.1 which is the minimum version that
does not suffer from the Java API mismatch issue [1].

The implementation is borrowed from the Gerrit project.

[1] https://github.com/bazelbuild/bazel/issues/6027

Change-Id: I224250088a1f5072fcaa3ec81228f4d2cb8cb389
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoFix wrong placeholder index in error message packInaccessible 05/149005/4
Matthias Sohn [Thu, 5 Sep 2019 22:52:48 +0000 (00:52 +0200)]
Fix wrong placeholder index in error message packInaccessible

See: https://www.eclipse.org/lists/jgit-dev/msg03850.html
Change-Id: I0e121a2b7ac399f4a663fa49ab330d27363e9a55
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGitText: Remove unused externalized strings 09/149009/3
David Pursehouse [Fri, 6 Sep 2019 02:06:33 +0000 (11:06 +0900)]
JGitText: Remove unused externalized strings

Change-Id: I995d7a1b6ab2866221eee9f5cb828b97192daf4a
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoRepoText: Remove unused externalized string 07/149007/3
David Pursehouse [Fri, 6 Sep 2019 01:04:42 +0000 (10:04 +0900)]
RepoText: Remove unused externalized string

Change-Id: Ida47637f54afdb76513be9b04aae32107567d4e3
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoCLI: Remove unused externalized strings 06/149006/3
David Pursehouse [Fri, 6 Sep 2019 00:20:55 +0000 (09:20 +0900)]
CLI: Remove unused externalized strings

Change-Id: Id44117dd72b0e71e9bf0046a3c965eeae64cf3ea
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoReceivePack: Prevent pointing a branch to a non-commit object 51/147751/17
Yunjie Li [Thu, 15 Aug 2019 17:39:25 +0000 (10:39 -0700)]
ReceivePack: Prevent pointing a branch to a non-commit object

Since commit c3b0dec509fe136c5417422f31898b5a4e2d5e02, Git has
disallowed writing a non-commit to refs/heads/* refs.  JGit still
allows that, which can put users in a bad situation.  For example,

git push origin v1.0:master

pushes the tag object v1.0 to refs/heads/master, instead of the
intended commit object v1.0^{commit}.

Prevent that by validating that the target of the ref points to a
commit object when pushing to refs/heads/*.

Git performs the same check at a lower level (in the RefDatabase).  We
could do the same here, but for now let's start conservatively by
handling it in pushes first.

[jn: fleshed out commit message]

Change-Id: I8f98ae6d8acbcd5ef7553ec732bc096cb6eb7c4e
Signed-off-by: Yunjie Li <yunjieli@google.com>
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge branch 'stable-5.5' 54/148954/1
Matthias Sohn [Thu, 5 Sep 2019 08:32:35 +0000 (10:32 +0200)]
Merge branch 'stable-5.5'

* stable-5.5:
  Update Orbit to R20190827152740 for 2019-09
  Prepare 5.5.0-SNAPSHOT builds
  JGit v5.5.0.201909041048-rc1

Change-Id: I008b374824e95138c78b4cdd56d39c47800d8cec
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoUpdate Orbit to R20190827152740 for 2019-09 48/148948/1
Matthias Sohn [Thu, 5 Sep 2019 08:27:51 +0000 (10:27 +0200)]
Update Orbit to R20190827152740 for 2019-09

Change-Id: I31d0ba525990cd391b704431212d98ce8b8b3970
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 5.5.0-SNAPSHOT builds 09/148909/1
Matthias Sohn [Wed, 4 Sep 2019 16:00:19 +0000 (18:00 +0200)]
Prepare 5.5.0-SNAPSHOT builds

Change-Id: I96bbefd698c74e450d05d21572d4769c6c5aaea6
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v5.5.0.201909041048-rc1 00/148900/1 v5.5.0.201909041048-rc1
Matthias Sohn [Wed, 4 Sep 2019 14:47:57 +0000 (16:47 +0200)]
JGit v5.5.0.201909041048-rc1

Change-Id: I77a8c73cfd0a27b1242eddf32da513ce0148260e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.5' 61/148861/1
Matthias Sohn [Wed, 4 Sep 2019 00:42:51 +0000 (02:42 +0200)]
Merge branch 'stable-5.5'

* stable-5.5:
  Prepare 5.4.4-SNAPSHOT builds
  JGit v5.4.3.201909031940-r
  Prepare 5.3.6-SNAPSHOT builds
  JGit v5.3.5.201909031855-r
  Prepare 5.1.12-SNAPSHOT builds
  JGit v5.1.11.201909031202-r
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings
  sshd: fix proxy connections with the DefaultProxyDataFactory
  sshd: support the HashKnownHosts configuration
  sshd: configurable server key verification
  sshd: allow setting a null ssh config
  sshd: simplify OpenSshServerKeyVerifier
  sshd: simplify ServerKeyLookup interface
  Use https in update site URLs

Change-Id: Icd21a8fcccffd56bfedbd037e48028308db6d13b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.4' into stable-5.5 60/148860/1
Matthias Sohn [Wed, 4 Sep 2019 00:20:44 +0000 (02:20 +0200)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Prepare 5.4.4-SNAPSHOT builds
  JGit v5.4.3.201909031940-r
  Prepare 5.3.6-SNAPSHOT builds
  JGit v5.3.5.201909031855-r
  Prepare 5.1.12-SNAPSHOT builds
  JGit v5.1.11.201909031202-r
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: Icd6630db6458971f840c3ab4553e00f6c775ede0
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 5.4.4-SNAPSHOT builds 59/148859/1
Matthias Sohn [Tue, 3 Sep 2019 23:48:25 +0000 (01:48 +0200)]
Prepare 5.4.4-SNAPSHOT builds

Change-Id: I64c03436c285bd8eb5e87abe560417402b60e695
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v5.4.3.201909031940-r 58/148858/1 v5.4.3.201909031940-r
Matthias Sohn [Tue, 3 Sep 2019 23:40:09 +0000 (01:40 +0200)]
JGit v5.4.3.201909031940-r

Change-Id: I48ff1d51122ff73e0561f1fcf52a532221810e5d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.3' into stable-5.4 57/148857/1
Matthias Sohn [Tue, 3 Sep 2019 23:28:05 +0000 (01:28 +0200)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Prepare 5.3.6-SNAPSHOT builds
  JGit v5.3.5.201909031855-r
  Prepare 5.1.12-SNAPSHOT builds
  JGit v5.1.11.201909031202-r
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: Icfd5a612055feeff04733c0d2c44837ab554a2c4
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 5.3.6-SNAPSHOT builds 56/148856/1
Matthias Sohn [Tue, 3 Sep 2019 23:03:41 +0000 (01:03 +0200)]
Prepare 5.3.6-SNAPSHOT builds

Change-Id: I4d57f8ea0ab1f8fbd73fd75861f2f751c4aba0a6
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v5.3.5.201909031855-r 55/148855/1 v5.3.5.201909031855-r
Matthias Sohn [Tue, 3 Sep 2019 22:54:34 +0000 (00:54 +0200)]
JGit v5.3.5.201909031855-r

Change-Id: I7f5dcebc2e5816c845fa63046c67bc2301926e2a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.2' into stable-5.3 54/148854/1
Matthias Sohn [Tue, 3 Sep 2019 22:32:42 +0000 (00:32 +0200)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Prepare 5.1.12-SNAPSHOT builds
  JGit v5.1.11.201909031202-r
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: I7e88c7c7d202f1e3fb8e143277650aa5fefff439
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 51/148851/2
Matthias Sohn [Tue, 3 Sep 2019 21:41:03 +0000 (23:41 +0200)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Prepare 5.1.12-SNAPSHOT builds
  JGit v5.1.11.201909031202-r
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: Iac5dc9683cea97db04d20f27c10f2e103d3ae7b5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 5.1.12-SNAPSHOT builds 49/148849/1
Matthias Sohn [Tue, 3 Sep 2019 20:56:39 +0000 (22:56 +0200)]
Prepare 5.1.12-SNAPSHOT builds

Change-Id: I353ac3f23024063722abc7340bc9a6df3c615741
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v5.1.11.201909031202-r 21/148821/1 v5.1.11.201909031202-r
Matthias Sohn [Tue, 3 Sep 2019 16:01:55 +0000 (18:01 +0200)]
JGit v5.1.11.201909031202-r

Change-Id: I288acf670160b9bcd2d04f572a902b5838b4d4f8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.0' into stable-5.1 06/148806/2
Matthias Sohn [Tue, 3 Sep 2019 14:02:44 +0000 (16:02 +0200)]
Merge branch 'stable-5.0' into stable-5.1

* stable-5.0:
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: I172136a031ff0730e575327cafb3527c9650a71d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-4.11' into stable-5.0 97/148797/2 stable-5.0
Matthias Sohn [Tue, 3 Sep 2019 13:54:54 +0000 (15:54 +0200)]
Merge branch 'stable-4.11' into stable-5.0

* stable-4.11:
  Prepare 4.11.10-SNAPSHOT builds
  JGit v4.11.9.201909030838-r
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: Ifb6a4dbea2f48fd2ffa66eb737d61920aefedfbd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 4.11.10-SNAPSHOT builds 94/148794/1 stable-4.11
Matthias Sohn [Tue, 3 Sep 2019 12:49:20 +0000 (14:49 +0200)]
Prepare 4.11.10-SNAPSHOT builds

Change-Id: Ic98bd87d96ce627d38e1ecc2c3cb28b517ab489e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v4.11.9.201909030838-r 87/148787/1 v4.11.9.201909030838-r
Matthias Sohn [Tue, 3 Sep 2019 12:37:49 +0000 (14:37 +0200)]
JGit v4.11.9.201909030838-r

Change-Id: Ie60468569074197d49e19cbd0ffaedfe88f3d74e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-4.10' into stable-4.11 86/148786/1
Matthias Sohn [Tue, 3 Sep 2019 12:23:29 +0000 (14:23 +0200)]
Merge branch 'stable-4.10' into stable-4.11

* stable-4.10:
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: If672b4f0c350f4e8ff7e1e706485cffd8137236d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-4.9' into stable-4.10 80/148780/2 stable-4.10
Matthias Sohn [Tue, 3 Sep 2019 12:21:04 +0000 (14:21 +0200)]
Merge branch 'stable-4.9' into stable-4.10

* stable-4.9:
  Bazel: Update bazlets to the latest master revision
  Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file

Change-Id: I8bb74aacc1c010cfed9a0c8acffb520724f0e395
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-4.9' into stable-4.10 79/148779/2
Matthias Sohn [Tue, 3 Sep 2019 11:24:28 +0000 (13:24 +0200)]
Merge branch 'stable-4.9' into stable-4.10

* stable-4.9:
  BatchRefUpdate: repro racy atomic update, and fix it
  Delete unused FileTreeIteratorWithTimeControl
  Fix RacyGitTests#testRacyGitDetection
  Change RacyGitTests to create a racy git situation in a stable way
  Silence API warnings

Change-Id: Id5bf44645655fca40ad22bb1f1ad20a7c2e8f6db
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoBazel: Update bazlets to the latest master revision 78/148778/1 stable-4.9
David Pursehouse [Tue, 3 Sep 2019 11:35:47 +0000 (20:35 +0900)]
Bazel: Update bazlets to the latest master revision

The latest revision includes various fixes to allow the build
to work with recent versions of Bazel.

Change-Id: I72c100b99762010946d9b2784286af560bbdf185
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoBazel: Remove FileTreeIteratorWithTimeControl from BUILD file 77/148777/1
David Pursehouse [Tue, 16 Jul 2019 02:19:09 +0000 (11:19 +0900)]
Bazel: Remove FileTreeIteratorWithTimeControl from BUILD file

FileTreeIteratorWithTimeControl was deleted in a024759, but was
not removed from the BUILD file, thus causing the bazel build to
fail.

Change-Id: I892c0ffcac947298d0d6009374ee2c5d9afefb66
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
(cherry picked from commit e54fde8616f53a6fab5201db4a0c7e67dd0145c5)

5 years agoBatchRefUpdate: repro racy atomic update, and fix it 06/148706/8
Han-Wen Nienhuys [Sat, 31 Aug 2019 19:33:58 +0000 (21:33 +0200)]
BatchRefUpdate: repro racy atomic update, and fix it

PackedBatchRefUpdate was creating a new packed-refs list that was
potentially unsorted. This would be papered over when the list was
read back from disk in parsePackedRef, which detects unsorted ref
lists on reading, and sorts them. However, the BatchRefUpdate also
installed the new (unsorted) list in-memory in
RefDirectory#packedRefs.

With the timestamp granularity code committed to stable-5.1, we can
more often accurately decide that the packed-refs file is clean, and
will return the erroneous unsorted data more often. Unluckily timed
delays also cause the file to be clean, hence this problem was
exacerbated under load.

The symptom is that refs added by a BatchRefUpdate would stop being
visible directly after they were added. In particular, the Gerrit
integration tests uses BatchRefUpdate in its setup for creating the
Admin group, and then tries to read it out directly afterward.

The tests recreates one failure case. A better approach would be to
revise RefList.Builder, so it detects out-of-order lists and
automatically sorts them.

Fixes https://bugs.eclipse.org/bugs/show_bug.cgi?id=548716 and
https://bugs.chromium.org/p/gerrit/issues/detail?id=11373.

Bug: 548716
Change-Id: I613c8059964513ce2370543620725b540b3cb6d1
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoDelete unused FileTreeIteratorWithTimeControl 65/148765/1
Matthias Sohn [Thu, 11 Jul 2019 08:00:23 +0000 (10:00 +0200)]
Delete unused FileTreeIteratorWithTimeControl

The only usage of this test iterator was removed in df637928d. Hence
delete this iterator and associated test.

Change-Id: I47710133ec3edc675c21db210960c024982668c6
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
(cherry picked from commit a024759cf5bf1cd6b9beb4f790d484943761a7e1)

5 years agoFix RacyGitTests#testRacyGitDetection 64/148764/1
Matthias Sohn [Tue, 18 Jun 2019 09:32:59 +0000 (11:32 +0200)]
Fix RacyGitTests#testRacyGitDetection

This test case assumed file system timestamp resolution of 1 second. On
filesystems with a finer resolution this test fails since the index
entry is only smudged if the file index entry's lastModified and the
lastModified of the git index itself are within the same filesystem
timer tick. Fix this by ensuring that these timestamps are identical
which should work for any filesystem timer resolution.

Bug: 548188
Change-Id: Id84d59e1cfeb48fa008f8f27f2f892c4f73985de
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
(cherry picked from commit 1159f9dd7c80a53c2509cd75d997a6afed37f9a6)

5 years agoChange RacyGitTests to create a racy git situation in a stable way 63/148763/1
Masaya Suzuki [Mon, 24 Dec 2018 03:31:10 +0000 (19:31 -0800)]
Change RacyGitTests to create a racy git situation in a stable way

By using File#setLastModified, we can create a racy git situation
stably.

Tested with --runs_per_test=100

Bug: 526111
Change-Id: I60b3632d353e19f335668325aa603640be423f58
Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
(cherry picked from commit df637928d2ef4b9ee06af7e37344c7848f870ce4)

5 years agoSilence API warnings 42/148742/2
Matthias Sohn [Mon, 2 Sep 2019 23:27:02 +0000 (01:27 +0200)]
Silence API warnings

Change-Id: I27fd62de51ca0eedcc7e2e256487bda1e18bce8a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agosshd: fix proxy connections with the DefaultProxyDataFactory 93/145493/5
Thomas Wolf [Thu, 4 Jul 2019 18:00:48 +0000 (20:00 +0200)]
sshd: fix proxy connections with the DefaultProxyDataFactory

The java.net.ProxySelector is quite a bit different from the one
in Eclipse. Eclipse (and the OS) uses "socks" as URI scheme to
look up a SOCKS proxy. java.net.ProxySelector needs "socket" as
scheme (and internally maps that to "socks" if and when it asks
the OS about the proxies).

Moreover, java.net.ProxySelector may return unresolved addresses,
whereas the Eclipse proxy selector always returns resolved addresses.

Fix both by explicitly resolving unresolved proxy addresses and using
scheme "socket" in the DefaultProxyDataFactory.

Tested manually with the jgit command-line tool using ssh -vvv -D7020
localhost and 3proxy as SOCKS5 proxies on localhost (3proxy with
user/password authentication). Start jgit with _JAVA_OPTIONS set to
"-DsocksProxyHost=<host> -DsocksProxyPort=<port>
-Djava.net.useSystemProxies=false" to test manually.

Bug: 548965
Change-Id: Ib81ae8255ac2f9c48268f172e7d8ebb4a792b66d
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agosshd: support the HashKnownHosts configuration 65/144665/7
Thomas Wolf [Fri, 21 Jun 2019 20:39:19 +0000 (22:39 +0200)]
sshd: support the HashKnownHosts configuration

Add the constant, and implement hashing of known host names in
OpenSshServerKeyDatabase. Add a test verifying that the hashing
works.

Bug: 548492
Change-Id: Iabe82b666da627bd7f4d82519a366d166aa9ddd4
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agosshd: configurable server key verification 73/144573/8
Thomas Wolf [Thu, 20 Jun 2019 17:43:49 +0000 (19:43 +0200)]
sshd: configurable server key verification

Provide a wrapper interface and change the implementation such that
a client can substitute its own database of known hosts keys instead
of the default file-based mechanism.

Bug: 547619
Change-Id: Ifc25a4519fa5bcf7bb8541b9f3e2de15215e3d66
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agosshd: allow setting a null ssh config 72/144572/4
Thomas Wolf [Thu, 20 Jun 2019 17:42:21 +0000 (19:42 +0200)]
sshd: allow setting a null ssh config

The same effect could already be obtained if the ~/.ssh/config file
did not exist. But that is more difficult to control by clients,
since JGit would pick up the config if it was then created. Therefore
allow specifying a null config explicitly to permanently switch off
config file handling.

Change-Id: Iedf8a7f4d5c1ca08e0a513ed28301d8e5261b22a
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agosshd: simplify OpenSshServerKeyVerifier 71/144571/4
Thomas Wolf [Thu, 20 Jun 2019 17:41:33 +0000 (19:41 +0200)]
sshd: simplify OpenSshServerKeyVerifier

Reduce the dependency on the ClientSession in preparation to
remove it altogether. Remove the internal helper, re-implement
the needed bits. We have not implemented any configuration
possibility in JGit for creating hashed host names in known hosts
files, so we don't need the sshd code that theoretically would
enable this.

Change-Id: I295f5106b60e1cc3a9d085b0cb7ff747daae88be
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agosshd: simplify ServerKeyLookup interface 70/144570/4
Thomas Wolf [Thu, 20 Jun 2019 17:40:45 +0000 (19:40 +0200)]
sshd: simplify ServerKeyLookup interface

We're actually interested only in the known public keys, we don't need
the corresponding host entry from the config.

Change-Id: Ibde6dffe9e3f87bfbb7c70d1f733b2b0e28cad71
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoMerge changes I1217f5f2,Iba037e0e,I61e6c93c,I6304d1cb
David Pursehouse [Fri, 30 Aug 2019 11:09:51 +0000 (07:09 -0400)]
Merge changes I1217f5f2,Iba037e0e,I61e6c93c,I6304d1cb

* changes:
  dfs: Take size as long instead of int
  dfs: Read at the aligned position
  dfs: Add a position argument
  dfs: Move the deeply nested code to its own method

5 years agoUse https in update site URLs 25/148625/1
Matthias Sohn [Fri, 30 Aug 2019 09:12:15 +0000 (11:12 +0200)]
Use https in update site URLs

Bug: 450485
Change-Id: I4fc288fbea2e8186d20295e9fadec721641e779b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.5' 05/148605/1
Jonathan Nieder [Fri, 30 Aug 2019 01:17:10 +0000 (18:17 -0700)]
Merge branch 'stable-5.5'

* stable-5.5:
  Return a new instance from openSystemConfig and openUserConfig

Change-Id: I3ba9fa8ceced6e9f883fc23afb0e2c812391beac
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge branch 'stable-5.4' into stable-5.5 04/148604/1
Jonathan Nieder [Fri, 30 Aug 2019 01:16:52 +0000 (18:16 -0700)]
Merge branch 'stable-5.4' into stable-5.5

* stable-5.4:
  Return a new instance from openSystemConfig and openUserConfig

Change-Id: If576513ebbd80c7f01b83be5ab2edd436f5739e3
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge branch 'stable-5.3' into stable-5.4 02/148602/1
Jonathan Nieder [Fri, 30 Aug 2019 01:16:39 +0000 (18:16 -0700)]
Merge branch 'stable-5.3' into stable-5.4

* stable-5.3:
  Return a new instance from openSystemConfig and openUserConfig

Change-Id: I5f2f957ff27b7941ab29b2dc1c885fbf0093705a
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge branch 'stable-5.2' into stable-5.3 01/148601/1
Jonathan Nieder [Fri, 30 Aug 2019 01:16:29 +0000 (18:16 -0700)]
Merge branch 'stable-5.2' into stable-5.3

* stable-5.2:
  Return a new instance from openSystemConfig and openUserConfig

Change-Id: I6491549ab13aad2a4c3f8444a090a94a378eccdb
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 00/148600/1
Jonathan Nieder [Fri, 30 Aug 2019 01:15:23 +0000 (18:15 -0700)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Return a new instance from openSystemConfig and openUserConfig

Change-Id: I93afa16b14e3e2d127705e3378fb703d6c329694
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoReturn a new instance from openSystemConfig and openUserConfig 73/148373/4
Matthias Sohn [Mon, 26 Aug 2019 20:43:11 +0000 (22:43 +0200)]
Return a new instance from openSystemConfig and openUserConfig

Move the handling of cached user and system config to getSystemConfig
and getUserConfig methods and revert the implementation of
openSystemConfig and openUserConfig to the old stateless
implementation.

This ensures the open methods respect the passed-in parent config, which
may be different on each invocation. Additionally, returning a new
instance matches the behavior of the previous implementation of the
default system reader, which downstream callers may be depending on.

Move the implementation of the new caching methods getSystemConfig and
getUserConfig up to SystemReader. This avoids that we break the ABI for
subclasses of SystemReader.

Also see [1] which fixed a similar problem with Gerrit's custom
SystemReader.

[1] https://gerrit-review.googlesource.com/c/gerrit/+/225458

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