]> source.dussan.org Git - jgit.git/log
jgit.git
5 years agoUpgrade spotbugs-maven-plugin to 3.1.10 95/134695/2
David Pursehouse [Mon, 7 Jan 2019 02:39:20 +0000 (11:39 +0900)]
Upgrade spotbugs-maven-plugin to 3.1.10

Change-Id: I800930d34491ae5568d47ccc59271b6ad4a24c3d
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoDon't swallow IOException 71/134671/4
Jonathan Nieder [Sat, 5 Jan 2019 00:02:07 +0000 (16:02 -0800)]
Don't swallow IOException

Swallowing intermittent errors and trying to recover from them
makes JGit's behavior hard to predict and difficult to debug.

Propagate the errors instead.  This doesn't violate JGit's usual
backward compatibility promise for clients because in these
contexts an IOException indicates either repository corruption or
a true I/O error.  Let's consider these cases one at a time.

In the case of repository corruption, falling back e.g. to an empty
set of refs or a missing ref will not serve a caller well.  The
fallback does not indicate the nature of the corruption, so they are
not in a good place to recover from the error.  This is analogous to
Git, which attempts to provide sufficient support to recover from
corruption (by ensuring commands like "git branch -D" cope with
corruption) but little else.

In the case of an I/O error, the best we can do is to propagate the
error so that the user sees a dialog and has an opportunity to try
again.  As in the corruption case, the fallback behavior does not
provide enough information for a caller to rely on the current error
handling, and callers such as EGit already need to be able to handle
runtime exceptions.

To be conservative, keep the existing behavior for the deprecated
Repository#peel method.  In this example, the fallback behavior is to
return an unpeeled ref, which is distinguishable from the ref not
existing and should thus at least be possible to debug.

Change-Id: I0eb58eb8c77519df7f50d21d1742016b978e67a3
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge "Deprecate Repository#hasObject"
Jonathan Nieder [Mon, 7 Jan 2019 18:46:36 +0000 (13:46 -0500)]
Merge "Deprecate Repository#hasObject"

5 years agoApache MINA sshd client: less aggressive key file name caching 31/134131/2
Thomas Wolf [Mon, 17 Dec 2018 12:02:19 +0000 (13:02 +0100)]
Apache MINA sshd client: less aggressive key file name caching

Don't use the ~/.ssh directory as cache key for the key provider
but the configured paths of the default keys. Otherwise changes
in that list of paths are not picked up.

This is in particular a problem for EGit, where the user can modify
this list of keys interactively in the preferences. Without this
change, Eclipse needs to be restarted to pick up such changes.

Bug: 542845
Change-Id: I63432fb10729a90b3c5e14f13e39bf482aef811b
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoDeprecate Repository#hasObject 72/134672/1
Jonathan Nieder [Sat, 5 Jan 2019 01:19:00 +0000 (17:19 -0800)]
Deprecate Repository#hasObject

Its implementation contains

} catch (IOException e) {
// Legacy API, assume error means "no"
return false;
}

Better to use ObjectDatabase#has, which throws IOException to report
errors.

Change-Id: I7de02f7ceb8f57b2a8ebdb16d2aa4376775ff933
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoCorrect target name for jgit-4.10-staging 68/134668/1
Dave Borowitz [Fri, 4 Jan 2019 23:06:23 +0000 (15:06 -0800)]
Correct target name for jgit-4.10-staging

Change-Id: I130c7f1420b6b3753f4d419a37d16633755da21c

5 years agoDeprecate RawParseUtils.UTF8-CHARSET 07/134607/3
Michael Keppler [Thu, 3 Jan 2019 06:57:02 +0000 (07:57 +0100)]
Deprecate RawParseUtils.UTF8-CHARSET

That constant is just a redirection to a java standard constant
meanwhile. It is not referenced anymore in jgit code (and egit is just
removing it). Clients can use the redirection target directly.

Change-Id: I058d013f61da8d7b771c499d8743aafb8faa5ea8
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoFix detection of "initial checkout" 34/132134/2
Christian Halstrick [Tue, 6 Nov 2018 16:56:15 +0000 (17:56 +0100)]
Fix detection of "initial checkout"

A checkout done directly after cloning (the "initial
checkout") has a different semantic as a default
checkout. That is defined in the documentation of
"git read-tree" [1]. JGit was detecting that it is
doing an initial checkout differently from native
git: jgit used to check that the index is empty
but native git required that the index file does
not exist [2]. Teach JGit to behave like native
git.

[1] https://github.com/git/git/blob/master/Documentation/git-read-tree.txt#L187
[2] https://marc.info/?t=154150811200001&r=1&w=2

Change-Id: I1dd0f1ede7cd7ea60d28607916d0165269a9f628

5 years agoUpgrade plexus-compiler-javac-errorprone to 2.8.5 69/134369/2
David Pursehouse [Fri, 21 Dec 2018 02:12:10 +0000 (11:12 +0900)]
Upgrade plexus-compiler-javac-errorprone to 2.8.5

Change-Id: I2898eef32472216a5fb33f5a036588dd022445cb
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoReplace deprecated FirstLine by FirstCommand 86/134586/2
Michael Keppler [Mon, 31 Dec 2018 07:31:09 +0000 (08:31 +0100)]
Replace deprecated FirstLine by FirstCommand

and allow package org.eclipse.jgit.http.server to use package
org.eclipse.jgit.internal.transport.parser.

Change-Id: Ief330c3e75a735853d0a5a265a9ff56fb5128b99
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMove BaseReceivePack#advertisedRefs getter and setter to ReceivePack 23/134523/7
Jonathan Nieder [Thu, 27 Dec 2018 00:11:07 +0000 (16:11 -0800)]
Move BaseReceivePack#advertisedRefs getter and setter to ReceivePack

Another step toward merging BaseReceivePack into ReceivePack.

Change-Id: If861e28ce512f556e574352fa7d4a0df0984693f
Signed-off-by: Jonathan Nieder <jrn@google.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMove BaseReceivePack#walk getter to ReceivePack 22/134522/6
Jonathan Nieder [Thu, 27 Dec 2018 00:05:34 +0000 (16:05 -0800)]
Move BaseReceivePack#walk getter to ReceivePack

Another step toward merging BaseReceivePack into ReceivePack.

Change-Id: I43cf2e36e2d5b0cd85bf23c81469909c14757b63
Signed-off-by: Jonathan Nieder <jrn@google.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMove BaseReceivePack#db getter to ReceivePack 21/134521/6
Jonathan Nieder [Wed, 26 Dec 2018 23:58:46 +0000 (15:58 -0800)]
Move BaseReceivePack#db getter to ReceivePack

Another step toward eliminating BaseReceivePack as a separate API.

Change-Id: If7b7d5c65a043607a2424211adb479fa33a9077b
Signed-off-by: Jonathan Nieder <jrn@google.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMove BaseReceivePack#pushCert getter and setter to ReceivePack 20/134520/6
Jonathan Nieder [Wed, 26 Dec 2018 23:59:36 +0000 (15:59 -0800)]
Move BaseReceivePack#pushCert getter and setter to ReceivePack

This is a first step toward eliminating the BaseReceivePack API.

Inspired by a larger change by Dan Wang <dwwang@google.com>.

Change-Id: I5c876a67d8db24bf808823d9ea44d991b1ce5277
Signed-off-by: Jonathan Nieder <jrn@google.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoRemove unused API problem filters 73/134573/1
Matthias Sohn [Sat, 29 Dec 2018 10:55:02 +0000 (11:55 +0100)]
Remove unused API problem filters

Change-Id: I8ed98ac60362ba071506b0bdacd2941ab72b6bf4
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoSilence API error for RefDatabase.getRef declared final 72/134572/1
Matthias Sohn [Sat, 29 Dec 2018 00:07:24 +0000 (01:07 +0100)]
Silence API error for RefDatabase.getRef declared final

RefDatabase.getRef was declared final in
c1954f6c366121f971699573322a2669c7dd9430
which only affects implementers.

Change-Id: I4c14232a119670d263d88db2b8d725dcdd36ab2a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoSuppress API errors and add missing @since tags caused by 6ea888a 45/134545/2
Matthias Sohn [Fri, 28 Dec 2018 02:18:58 +0000 (03:18 +0100)]
Suppress API errors and add missing @since tags caused by 6ea888a

Change-Id: Id042d46ba078af35b9c22a079da4ae14fc5fa231
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge changes Id3bb9443,I1be1948b
Jonathan Nieder [Fri, 28 Dec 2018 20:57:51 +0000 (15:57 -0500)]
Merge changes Id3bb9443,I1be1948b

* changes:
  RefDatabase: Introduce findRef synonym for getRef
  RefDirectory: Look up several exact refs in one shot

5 years agoMove first line parsing for v0 push out of BaseReceivePack 19/134519/6
Jonathan Nieder [Wed, 26 Dec 2018 23:36:39 +0000 (15:36 -0800)]
Move first line parsing for v0 push out of BaseReceivePack

This simplifies the BaseReceivePack class and decreases its API
surface, which should make merging with ReceivePack easier.

Inspired by 6aca8899a5c02b3f6be7b9196cf5e935914476f0 (Move first line
parsing for v0/v1 pack negotiation out of UploadPack, 2018-09-17).

Change-Id: I1fc175d15aa7cb5968c26fc83a95480403af617c

5 years agoRefDatabase: Introduce findRef synonym for getRef 70/49570/9
Jonathan Nieder [Thu, 12 Nov 2015 00:10:24 +0000 (16:10 -0800)]
RefDatabase: Introduce findRef synonym for getRef

Using findRef instead of getRef makes it clearer that the caller wants
to search for the ref in the search path, instead of looking for a ref
that exactly matches the input.

This change introduces the new findRef method and deprecates getRef.
It updates Repository#findRef to use the new method, ensuring some
test coverage.  Other callers will be updated in followup changes.

A nice side effect of introducing the new findRef method is that it is
final and based on firstExactRef, so implementers can focus on
implementing the latter efficiently and do not have to carefully write
custom path search code respecting SEARCH_PATH.

Change-Id: Id3bb944344a9743705fd1f20193ab679298fa51c
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoRefDirectory: Look up several exact refs in one shot 73/49573/5
Jonathan Nieder [Thu, 27 Dec 2018 04:33:55 +0000 (20:33 -0800)]
RefDirectory: Look up several exact refs in one shot

Override exactRef(String...) and firstExactRef(String...) with
implementations specific to FileRepository.

The specialized implementations are similar to the generic ones from
RefDatabase, but because these use readRef directly instead of
exactRef, they only need to call fireRefsChanged once.

This will allow replacing RefDirectory#getRef with a generic
implementation that uses firstExactRef without hurting performance.

Change-Id: I1be1948bd6121c1a1e8152e201aab97e7fb308bb
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoRefDirectory: Do not use search path to find additional refs 72/49572/6
Jonathan Nieder [Wed, 11 Nov 2015 23:50:39 +0000 (15:50 -0800)]
RefDirectory: Do not use search path to find additional refs

Psuedorefs like FETCH_HEAD and MERGE_HEAD are supposed to be directly
under the .git directory, not in other locations in the SEARCH_PATH
like refs/ and refs/heads/.  Use exactRef to access them.

Change-Id: Iab8ac47008822fa78fc0691e239e518c34d7a98e
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoRefDatabase: Remove fallback exactRef implementation 64/60164/3
Jonathan Nieder [Wed, 11 Nov 2015 22:51:02 +0000 (14:51 -0800)]
RefDatabase: Remove fallback exactRef implementation

This is simpler to implement than getRef.  Make it abstract so
implementers remember to override it.

Change-Id: I5f319be1fb1206d7a0142ea939dc4e1039f850ab
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoRefDirectory: Fire RefsChangedEvent on error, too 09/60109/4
Jonathan Nieder [Wed, 11 Nov 2015 01:03:06 +0000 (17:03 -0800)]
RefDirectory: Fire RefsChangedEvent on error, too

getRef and exactRef can produce recoverable exceptions --- for
example, a corrupt loose ref that cannot be parsed.  If readRef was
called and updated looseRefs in the process, RefsChangedEvent should
still be fired.

Noticed while improving the implementation of getRef.  This commit
only affects exactRef and getRef.  Other methods might be similarly
skipping firing RefsChangedEvent in their error handling code, and
this change does not fix them.

Change-Id: I0f460f6c8d9a585ad8453a4a47c1c77e24a1fb83
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoRefDirectory: Refactor getRef and exactRef to share code 08/60108/4
Jonathan Nieder [Wed, 11 Nov 2015 00:56:41 +0000 (16:56 -0800)]
RefDirectory: Refactor getRef and exactRef to share code

Both getRef and exactRef look for a ref or pseudoref in the $GIT_DIR
directory, with careful error handling to handle non-refs like
.git/config.

Avoid the duplication by factoring out a helper that takes care of
this.  This should make the code easier to understand and manipulate.

Change-Id: I2ea67816d2385e84e2d3394b897e23df5826ba50
Signed-off-by: Jonathan Nieder <jrn@google.com>
5 years agoMerge changes from topic 'update-index-ref-decorator'
Jonathan Nieder [Wed, 26 Dec 2018 18:12:14 +0000 (13:12 -0500)]
Merge changes from topic 'update-index-ref-decorator'

* changes:
  RefCursor: Remove unnecessary getUpdateIndex method
  RefDatabase/Ref: Add versioning to reference database

5 years agoRefCursor: Remove unnecessary getUpdateIndex method 01/134301/10
Ivan Frade [Thu, 20 Dec 2018 06:25:55 +0000 (22:25 -0800)]
RefCursor: Remove unnecessary getUpdateIndex method

Now the reference carries its updateIndex, so the cursor doesn't need
to expose it.

Change-Id: Icbfca46f92a13f3d8215ad10b2a166a6f40b0b0f
Signed-off-by: Ivan Frade <ifrade@google.com>
5 years agoRefDatabase/Ref: Add versioning to reference database 92/133092/20
Ivan Frade [Thu, 20 Dec 2018 00:43:56 +0000 (16:43 -0800)]
RefDatabase/Ref: Add versioning to reference database

In DFS implementations the reference table can fall out of sync, but
it is not possible to check this situation in the current API.

Add a property to the Refs indicating the order of its updates.  This
version is set only by RefDatabase implementations that support
versioning (e.g reftable based).

Caller is responsible to check if the reference db creates versioned
refs before accessing getUpdateIndex(). E.g:

   Ref ref = refdb.exactRef(...);
   if (refdb.hasVersioning()) {
       ref.getUpdateIndex();
   }

Change-Id: I0d5ec8e8df47c730301b2e12851a6bf3dac9d120
Signed-off-by: Ivan Frade <ifrade@google.com>
5 years agoUpdate org.tukaani.xz to 1.8.0.v20180207-1613 64/134464/1
Matthias Sohn [Sun, 23 Dec 2018 02:18:59 +0000 (03:18 +0100)]
Update org.tukaani.xz to 1.8.0.v20180207-1613

CQ: 18321
Change-Id: I49f47748e7753146c0d696b2bd381d2d3465691e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoSkip some tests when the runtime cannot handle Unicode file paths 60/134460/5
Masaya Suzuki [Mon, 24 Dec 2018 00:43:54 +0000 (16:43 -0800)]
Skip some tests when the runtime cannot handle Unicode file paths

When executing a test with LANG environment variable set to non UTF-8
encoding, it seems that JRE cannot handle Unicode file paths. This
happens when this test is executed in Bazel as it unsets LANG
(https://docs.bazel.build/versions/master/test-encyclopedia.html#initial-conditions).

Skip the test if the runtime cannot handle Unicode file paths.

Change-Id: I16bd3cd959dbaf2335b9c5202873e2f12ed0ba21
Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
5 years agoChange RacyGitTests to create a racy git situation in a stable way 61/134461/2
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>
5 years agoCapture test coverage and add an aggregate test coverage report 97/134097/3
Matthias Sohn [Wed, 5 Dec 2018 13:37:59 +0000 (14:37 +0100)]
Capture test coverage and add an aggregate test coverage report

Configure Maven build to capture test coverage using jacoco.

Add new org.eclipse.jgit.coverage Maven module to aggregate
jacoco test coverage results and generate test coverage HTML report at

org.eclipse.jgit.coverage/target/site/jacoco-aggregate/index.html

See https://www.eclemma.org/jacoco/trunk/doc/maven.html

Change-Id: Iaeec4033e448ebc16965c05ab54109c4155a307a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGitInternalException: Fix typo in Javadoc 26/134426/1
David Pursehouse [Fri, 21 Dec 2018 23:06:40 +0000 (08:06 +0900)]
JGitInternalException: Fix typo in Javadoc

Change-Id: I46fabab3cb2d9164234ce04de346826687a3fa35
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoAvoid double words 71/134371/1
Mincong HUANG [Fri, 21 Dec 2018 06:50:54 +0000 (07:50 +0100)]
Avoid double words

Change-Id: I0fdf595cba93f5a5cdd0496cee07ac91db304532
Signed-off-by: Mincong Huang <mincong.h@gmail.com>
5 years agoSilence API error for 3 digit version number in @since tag 67/134367/1
Matthias Sohn [Fri, 21 Dec 2018 00:30:30 +0000 (01:30 +0100)]
Silence API error for 3 digit version number in @since tag

Change-Id: I4943d9338ddf294e2ef67f0d459a3030f528d0c9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoRemove unnecessary @since tags from non-API classes 18/134318/1
David Pursehouse [Thu, 20 Dec 2018 11:02:31 +0000 (20:02 +0900)]
Remove unnecessary @since tags from non-API classes

Change-Id: I6bed174c062a0785641dc8ad69151bf7e843cdcf
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoMerge branch 'stable-5.2' 03/134303/1
David Pursehouse [Thu, 20 Dec 2018 06:51:08 +0000 (15:51 +0900)]
Merge branch 'stable-5.2'

* stable-5.2:
  BasePackConnection: Check for expected length of ref advertisement
  TransferConfig: Make constructors public
  Update last JGit version

Change-Id: I4406d4f68136a2ce363701324b9a842ad468bc59
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoMerge branch 'stable-5.1' into stable-5.2 99/134299/1
David Pursehouse [Thu, 20 Dec 2018 05:01:52 +0000 (14:01 +0900)]
Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  BasePackConnection: Check for expected length of ref advertisement
  TransferConfig: Make constructors public

Change-Id: I2480a0455250ee381fae93cac2db30f8305fa6aa
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoBasePackConnection: Check for expected length of ref advertisement 85/134185/4
David Pursehouse [Tue, 18 Dec 2018 10:53:26 +0000 (19:53 +0900)]
BasePackConnection: Check for expected length of ref advertisement

When a server sends a ref advertisement using protocol v2 it contains
lines other than ref names and sha1s.  Attempting to get the sha1 out
of such a line using the substring method can result in a SIOOB error
when it doesn't actually contain the sha1 and ref name.

Add a check that the line is of the expected length, and subsequently
that the extracted object id is valid, and if not throw an exception.

Change-Id: Id92fe66ff8b6deb2cf987d81929f8d0602c399f4
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoTransferConfig: Make constructors public 79/134179/3
David Pursehouse [Tue, 18 Dec 2018 06:44:44 +0000 (15:44 +0900)]
TransferConfig: Make constructors public

UploadPack has a setTransferConfig method which allows to set the
transfer config, however since the constructors of TransferConfig
have the default package visibility it is not possible for any
application using UploadPack, for example Gerrit, to actually set
a transfer config.

Make the constructors public. This is consistent with the public
constructors for example on PackConfig.

Change-Id: I07080255838421871403b2b2bcc294aa8f621c57
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoLfsGson: Remove unnecessary @since tag 92/134292/1
David Pursehouse [Wed, 19 Dec 2018 23:32:47 +0000 (08:32 +0900)]
LfsGson: Remove unnecessary @since tag

The tag is formed inconsistently to tags in the rest of the JGit code
base (i.e. "4.10.0" with a trailing ".0" where all the others don't).

However since this class is not in the public API, the @since tag is
not necessary and can just be removed.

Change-Id: Ifa3f543f819a39453fcf343278e522b5d7b003c3
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUploadPack: Rewrite setAdvertiseRefsHook to use ternary operator 74/134174/2
David Pursehouse [Tue, 18 Dec 2018 02:57:20 +0000 (11:57 +0900)]
UploadPack: Rewrite setAdvertiseRefsHook to use ternary operator

This makes the implementation consistent with the other similar
methods in this class.

Change-Id: I007876aad883615d696c8eabc886818ae00b10ee
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUploadPack: Prevent setting null protocolV2Hook 73/134173/2
David Pursehouse [Tue, 18 Dec 2018 02:44:00 +0000 (11:44 +0900)]
UploadPack: Prevent setting null protocolV2Hook

The setProtocolV2Hook sets the protocolV2Hook to whatever value is
passed, which could be null, but the invocations of protocolV2Hook's
methods are not guarded by null-checks.

Annotate the parameter as @Nullable and set ProtocolV2Hook.DEFAULT
when null is passed. This makes the implementation consistent with
other similar methods that set a hook or filter with possible null
value.

Change-Id: I70919a3248d4c2658783941a37c47e437cff0baa
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUploadPack: Add @Nullable annotations 72/134172/2
David Pursehouse [Tue, 18 Dec 2018 05:07:53 +0000 (14:07 +0900)]
UploadPack: Add @Nullable annotations

The class has several methods where passing a null parameter is
valid. Annotate those parameters as @Nullable.

Change-Id: Ie08893ee3ab34c1ffb2db875b4ab049ad065c697
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUpgrade maven-jar-plugin to 3.1.1 82/133982/2
David Pursehouse [Thu, 13 Dec 2018 11:51:18 +0000 (20:51 +0900)]
Upgrade maven-jar-plugin to 3.1.1

Change-Id: I1b230fb558bc4773594a11292ee12820abe3ebaf
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUpgrade Tycho to 1.3 90/134090/2
Michael Keppler [Sat, 15 Dec 2018 15:17:31 +0000 (16:17 +0100)]
Upgrade Tycho to 1.3

With the upcoming Eclipse release 2018-12 a new version of Tycho has
been released. Upgrade the Tycho related build steps to the new version
in the Maven build.

Change-Id: Ifff186a9f97ed9faf70f15b20396724b0c9e801c
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
5 years agoUpdate last JGit version 99/134099/1
Thomas Wolf [Sat, 15 Dec 2018 20:59:32 +0000 (21:59 +0100)]
Update last JGit version

The jgit-last-release-version is used by japicmp as baseline.

Change-Id: If56cc1785b61c92c9a05c8c29c6cb62001e89218
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoEnable japicmp for new SSH bundle; update its baseline 93/134093/2
Thomas Wolf [Sat, 15 Dec 2018 19:27:34 +0000 (20:27 +0100)]
Enable japicmp for new SSH bundle; update its baseline

In the original contribution of this bundle, japicmp was disabled
as no previous version to compare against existed. Enable it now.

Update the version to compare against to 5.2.0.201812061821-r.

Change-Id: I42f812befde2d0d98db5f87e05230b51af244ae6
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoMerge branch 'stable-5.2' 44/133744/1
Matthias Sohn [Sat, 8 Dec 2018 23:45:43 +0000 (00:45 +0100)]
Merge branch 'stable-5.2'

* committer:
  Update list of committers
  Add new ssh bundles to Maven central scripts
  Update maven site reports
  Prepare 5.2.1-SNAPSHOT builds
  JGit v5.2.0.201812061821-r
  Update Orbit to R20181128170323 for 2018-12

Change-Id: I97c6ce5f0c963bfab4d45462f555563d9c5bbe8a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoUpdate list of committers 43/133743/1
Matthias Sohn [Sat, 8 Dec 2018 23:24:00 +0000 (00:24 +0100)]
Update list of committers

Change-Id: I5bd3dc06103f8f62af1485b92e7b89f8a725be28
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoAdd new ssh bundles to Maven central scripts 42/133742/1
Matthias Sohn [Sat, 8 Dec 2018 23:12:51 +0000 (00:12 +0100)]
Add new ssh bundles to Maven central scripts

Change-Id: I5c41426f59a60af3da808f89be4e498c7ba2196e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoUpdate maven site reports 41/133741/1
Matthias Sohn [Sat, 8 Dec 2018 23:12:11 +0000 (00:12 +0100)]
Update maven site reports

- update name of reports which changed name in
  maven-project-info-reports-plugin 3.0.0
- add dependency-covergence report
- add dependency-management report
- add index report
- add summary report

Change-Id: I6d406ecd9e082d96b2bd250704d5ca18e7c8f735
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 5.2.1-SNAPSHOT builds 27/133627/1
Matthias Sohn [Fri, 7 Dec 2018 00:46:38 +0000 (01:46 +0100)]
Prepare 5.2.1-SNAPSHOT builds

Change-Id: I68d9f5b1c8ca8e8eada9143093dc4fa82519edd8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoJGit v5.2.0.201812061821-r 19/133619/1 v5.2.0.201812061821-r
Matthias Sohn [Thu, 6 Dec 2018 23:20:43 +0000 (00:20 +0100)]
JGit v5.2.0.201812061821-r

Change-Id: I8528c913ad1a820ee9a2fa6be1c9125b518caefe
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoUpdate Orbit to R20181128170323 for 2018-12 34/133534/1
Matthias Sohn [Wed, 5 Dec 2018 14:25:23 +0000 (15:25 +0100)]
Update Orbit to R20181128170323 for 2018-12

Change-Id: Ia3597d2d0609e5a0a67e5f2518f68ce99ab8aa3c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoPrepare 5.3.0-SNAPSHOT builds 62/133362/1
Matthias Sohn [Mon, 3 Dec 2018 01:32:49 +0000 (02:32 +0100)]
Prepare 5.3.0-SNAPSHOT builds

Change-Id: I8951c2cf650cc3e41d2baa0b330b94468cfed5c2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoMerge branch 'stable-5.2' 61/133361/1
Matthias Sohn [Mon, 3 Dec 2018 01:32:05 +0000 (02:32 +0100)]
Merge branch 'stable-5.2'

* stable-5.2:
  Format lib/BUILD with buildifier
  Update Orbit to S20181128170323 for 2018-12 RC1
  Include id_ed25519 in the known default identity files
  Apache MINA sshd client: enable support for ed25519 keys
  Prepare 5.2.0-SNAPSHOT builds
  Set git environment variables for hooks
  JGit v5.2.0.201811281532-m3

Change-Id: If96adcbf35ccf8d9f4da0f5d97491f502f5a72a9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoFormat lib/BUILD with buildifier 48/133348/3
David Pursehouse [Sun, 2 Dec 2018 12:02:22 +0000 (21:02 +0900)]
Format lib/BUILD with buildifier

Change-Id: I63db70e6e6f4da44a211621d8721ede66bce44bd
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
5 years agoUpdate Orbit to S20181128170323 for 2018-12 RC1 58/133358/1
Matthias Sohn [Sun, 2 Dec 2018 23:05:14 +0000 (00:05 +0100)]
Update Orbit to S20181128170323 for 2018-12 RC1

Change-Id: I4f66b907d8027cae779f54ef0bdc5d36b4a21f6f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoInclude id_ed25519 in the known default identity files 52/133352/1
Thomas Wolf [Sun, 2 Dec 2018 15:35:12 +0000 (16:35 +0100)]
Include id_ed25519 in the known default identity files

Change-Id: I9fb30c8fbb65536782ee73644c8990eb6661c660
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoApache MINA sshd client: enable support for ed25519 keys 18/132718/4
Thomas Wolf [Mon, 19 Nov 2018 22:11:13 +0000 (23:11 +0100)]
Apache MINA sshd client: enable support for ed25519 keys

Include the net.i2p.crypto.eddsa bundle via a hard dependency.

Add tests for dealing with ed25519 host keys and user key files.

Manual tests: fetching from git.eclipse.org with an ed25519 user key,
and pushing this change itself using the same ed25519 key.

Note that sshd 2.0.0 does not yet support encrypted ed25519 private
keys.

Bug: 541272
Change-Id: I7072f4014d9eca755b4a2412e19c086235e5eae9
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
5 years agoMerge "Set git environment variables for hooks" into stable-5.2
Thomas Wolf [Sun, 2 Dec 2018 10:34:18 +0000 (05:34 -0500)]
Merge "Set git environment variables for hooks" into stable-5.2

5 years agoUpgrade spotbugs-maven-plugin to 3.1.9 44/133344/2
Michael Keppler [Sun, 2 Dec 2018 07:25:09 +0000 (08:25 +0100)]
Upgrade spotbugs-maven-plugin to 3.1.9

Change-Id: Idc447dfbcd165ef0362142bd17434d304c6c7f01
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
5 years agoPrepare 5.2.0-SNAPSHOT builds 32/133332/1
Matthias Sohn [Fri, 30 Nov 2018 21:57:04 +0000 (22:57 +0100)]
Prepare 5.2.0-SNAPSHOT builds

Change-Id: I18646aaeee51047b234b758dcc1c2f89fd01b2f8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
5 years agoSet git environment variables for hooks 74/133174/2
Thomas Wolf [Wed, 28 Nov 2018 10:06:08 +0000 (11:06 +0100)]
Set git environment variables for hooks

Set GIT_DIR and GIT_WORK_TREE when calling hooks.

Bug: 541622
Change-Id: I6153d8a6a934ec37a3a5e7319c2d0e516f539ab7
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoJGit v5.2.0.201811281532-m3 13/133213/1 v5.2.0.201811281532-m3
Matthias Sohn [Wed, 28 Nov 2018 20:35:26 +0000 (21:35 +0100)]
JGit v5.2.0.201811281532-m3

Change-Id: I79988b473d67e565d8f6bcac40ee9a14b26c9e60
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoUpdate Apache commons compress to 1.18.0 04/133204/1
Matthias Sohn [Wed, 28 Nov 2018 18:26:55 +0000 (19:26 +0100)]
Update Apache commons compress to 1.18.0

to consume fix for vulnerability [1] in Apache commons compress which is
fixed in version 1.18.

[1] https://nvd.nist.gov/vuln/detail/CVE-2018-1324

CQ: 18320
Change-Id: I39b1d815e5b8e0208600afafe7a72bb603d04fb8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoFix running tests from bazel 03/133203/1
Matthias Sohn [Wed, 28 Nov 2018 19:16:23 +0000 (20:16 +0100)]
Fix running tests from bazel

The new dependency to mockito for JDKHttpConnectionTest wasn't added for
bazel test run.

Change-Id: Ie967b7152340a0b3e05cced7eadfd40af78d9995
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoUpdate Orbit to I20181128011035 88/133188/1
Matthias Sohn [Wed, 28 Nov 2018 15:43:44 +0000 (16:43 +0100)]
Update Orbit to I20181128011035

to consume fix for vulnerability [1] in Apache commons compress which is
fixed in version 1.18.

[1] CVE-2018-1324

CQ: 18320
Change-Id: I01e435fda834bbb22892a1cfba411d0196d7de17
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoUpdate bcprov-jdk15on used in tests to 1.59 55/133155/2
Matthias Sohn [Wed, 28 Nov 2018 00:51:44 +0000 (01:51 +0100)]
Update bcprov-jdk15on used in tests to 1.59

CQ: 15889
Change-Id: I04c9099941dd1929cd9075ad6c89660a63e7de8f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoMerge "Fix IndexDiffs for git links"
Christian Halstrick [Wed, 28 Nov 2018 11:11:05 +0000 (06:11 -0500)]
Merge "Fix IndexDiffs for git links"

6 years agoMerge branch 'stable-5.1' 16/133116/1
David Pursehouse [Tue, 27 Nov 2018 11:01:40 +0000 (20:01 +0900)]
Merge branch 'stable-5.1'

* stable-5.1:
  Fix DescribeCommand with multiple match options
  Fix git-describe tie-breakers

Change-Id: I64d9b0099fc0d8449ec08f0b5653572b5c2f840f
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
6 years agoMerge branch 'stable-5.0' into stable-5.1 15/133115/1
David Pursehouse [Tue, 27 Nov 2018 11:01:06 +0000 (20:01 +0900)]
Merge branch 'stable-5.0' into stable-5.1

* stable-5.0:
  Fix DescribeCommand with multiple match options
  Fix git-describe tie-breakers

Change-Id: I63e7a56bb617b5ce8774e1dc7f5efdde25e7cd97
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
6 years agoMerge branch 'stable-4.11' into stable-5.0 14/133114/1
David Pursehouse [Tue, 27 Nov 2018 10:50:54 +0000 (19:50 +0900)]
Merge branch 'stable-4.11' into stable-5.0

* stable-4.11:
  Fix DescribeCommand with multiple match options
  Fix git-describe tie-breakers

Change-Id: Ibb98f143ee0ce7635beb30ec404b4134a73788f6
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
6 years agoRemove unused externalized text "submodulesNotSupported" 38/133038/2
Matthias Sohn [Sun, 25 Nov 2018 21:33:22 +0000 (22:33 +0100)]
Remove unused externalized text "submodulesNotSupported"

This text is unused since d72b9328.

Change-Id: I82e5652e205d7b238ff8adc21994029b828b09f4
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoFix IndexDiffs for git links 57/128057/3
Thomas Wolf [Fri, 24 Aug 2018 23:58:09 +0000 (01:58 +0200)]
Fix IndexDiffs for git links

After cloning a repo with a submodule, non-recursively, JGit would
encounter in its TreeWalk in IndexDiff:

* first, a missing gitlink (in index & HEAD, not in working tree)
* second, the untracked folder (not in index and head, in working tree)

As a result, it would report the submodule as missing. Canonical git
reports a clean workspace.

The root cause of this is that the path of a gitlink "x" did
not compare equal to the path of a tree "x" in JGit.

Correct Paths.compare() to account for that. If two paths are otherwise
equal, then let gitlinks match both trees and files. Matching trees
solves the bug. Matching files is necessary to handle the case where
the gitlink directory was replaced by a file; see the new test case
IndexDiffSubmoduleTest.testSubmoduleReplacedByFile(). Comparisons of
unequal paths are left untouched, so the sort order is unchanged.

After the fix, another bug(?) in WorkingTreeIterator became apparent:
with core.dirNoGitLinks = true, it was no longer possible to overwrite
a gitlink in the index. This is now fixed in WorkingTreeIterator.

Add new test cases for the bug itself and for some related cases
(submodule directory deleted or replaced by a file) in
IndexDiffSubmoduleTest. Add a test for missing files in IndexDiffTest,
and adapt the PathsTest to test matching gitlinks.

Bug: 467631
Change-Id: I0549d10d46b1858e5eec3cc15095aa9f1d5f5280
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoFix DescribeCommand with multiple match options 39/133039/2
Matthias Sohn [Sun, 25 Nov 2018 22:15:11 +0000 (23:15 +0100)]
Fix DescribeCommand with multiple match options

when multiple match options are given in git describe the result must
not depend on the order of the match options. JGit wrongly picked the
first match using the match options in the order they were defined. Fix
this by concatenating the streams of matching tags for all match options
and then choosing the first match on the concatenated stream sorted in
tie break order.

See https://git-scm.com/docs/git-describe#git-describe---matchltpatterngt

Change-Id: Id01433d35fa16fb4c30526605bee041ac1d954b2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoAdd a method to get all values of HTTP header defined as list 22/132722/9
Matthias Sohn [Tue, 20 Nov 2018 00:00:30 +0000 (16:00 -0800)]
Add a method to get all values of HTTP header defined as list

According to RFC 2616 [1] header field names are case insensitive.
Header fields defined as a comma separated list can have multiple header
fields with the same field name. Add a method to HttpConnection which
retrieves all values with a given header field name with the field name
compared case insensitive.

[1] https://tools.ietf.org/html/rfc2616#section-4.2"

Change-Id: I7f601b21cda99e84f43f866c7c7cb4cb0e3cf5c3
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoUndo treating blobs with NULs as a single line 45/132745/4
Thomas Wolf [Tue, 20 Nov 2018 11:24:38 +0000 (12:24 +0100)]
Undo treating blobs with NULs as a single line

This partially reverts commit a551b646: revert the changes in
RawParseUtils.lineMap(). Forcing all blobs containing a NUL byte
as a single line causes blame to produce useless results as soon
as it hits any version containing a NUL byte.

Doing binary detection at this level also has the problem that the
user cannot control it. Not by setting the text attribute nor in any
other way.

This came up in bug 541036, where a Java source inadvertently
contained NUL bytes in strings. Even fixing this by using escapes
"\000" will not fix JGit's blame for this file because the past
versions will still contain the NUL byte.

Native git can blame that file from bug 541036 fine.

Added new tests verifying that blaming a text file containing a NUL
byte produces sensible results.

Bug: 541036
Change-Id: I8991bec88e9827cc096868c6026ea1890b6d0d32
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoUpdate Ant to 1.10.5 70/132870/1
Matthias Sohn [Thu, 22 Nov 2018 00:15:31 +0000 (01:15 +0100)]
Update Ant to 1.10.5

CQ: 18322
Change-Id: I88982116e02598b0ac658c4d740d7a7c1e37280a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoUpdate Orbit to S20181120221132 for 2018-12 68/132868/1
Matthias Sohn [Wed, 21 Nov 2018 23:21:18 +0000 (00:21 +0100)]
Update Orbit to S20181120221132 for 2018-12

Change-Id: Ice169d000e4757732e847ba5e2ea5e59945a09e8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoUpdate mockito to 2.13.0 34/132834/2
Matthias Sohn [Wed, 21 Nov 2018 14:14:35 +0000 (15:14 +0100)]
Update mockito to 2.13.0

Update mockito and its dependencies to latest version available in
Orbit:
- mockito 2.13.0.v20180426-1843
- net.bytebuddy.byte-buddy 1.7.9.v20180420-1519
- net.bytebuddy.byte-buddy-agent 1.7.9.v20180420-1519
- org.objenesis 2.6.0.v20180420-1519

CQ: 18301
CQ: 18303
CQ: 18319
Change-Id: I3dd01e5b0b5a023fcb6530e8ec76729cfc41d735
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
6 years agoRemove unnecessary modifiers from interfaces 05/132805/1
Jonathan Nieder [Wed, 21 Nov 2018 00:18:44 +0000 (16:18 -0800)]
Remove unnecessary modifiers from interfaces

This continues what commit d9ac7ddf1026123fee6c4477d172d614522dfc08
(Remove unnecessary modifiers from interfaces, 2018-11-15) started.

Change-Id: I89720985a5a986722a0dcb9b5e9bbc25996bd5b3

6 years agoNew GpgConfig for typed access to GPG settings 42/131642/5
Gunnar Wagenknecht [Tue, 30 Oct 2018 12:44:24 +0000 (13:44 +0100)]
New GpgConfig for typed access to GPG settings

Change-Id: Ifece38132e0390931d33b5678bbbd4a43f9099da
Signed-off-by: Gunnar Wagenknecht <gunnar@wagenknecht.org>
6 years agoRevert C Git 1.7.5 bug workaround 56/132256/9
Masaya Suzuki [Sun, 11 Nov 2018 20:31:22 +0000 (12:31 -0800)]
Revert C Git 1.7.5 bug workaround

This reverts the workaround introduced by
1c6c73c5a9b8dd700be45d658f165a464265dba7, which is a patch for dealing
with a buggy C Git client v1.7.5 in 2012. We'll stop supporting very old
C Git clients.

Change-Id: I94999a39101c96f210b5eca3c2f620c15eb1ac1b
Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
6 years agoApache MINA sshd client: don't leak HostConfigEntry 15/132615/2
Thomas Wolf [Sat, 17 Nov 2018 17:44:27 +0000 (18:44 +0100)]
Apache MINA sshd client: don't leak HostConfigEntry

ProxyDataFactory had a parameter of type HostConfigEntry, but actually
it wasn't used anywhere. Remove it -- it was the last leaked type from
Apache MINA sshd.

Also use the logger provided by upstream SshClient instead of creating
a new Logger.

Bug: 520927
Change-Id: Iaa78bbb998a5e574fa091664b75c48a3b9cfb897
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoApache MINA sshd client: test & fix password authentication 81/132581/3
Thomas Wolf [Fri, 16 Nov 2018 16:00:25 +0000 (17:00 +0100)]
Apache MINA sshd client: test & fix password authentication

Add tests for password and keyboard-interactive authentication.
Implement password authentication; the default provided by sshd
is non-interactive, which is not useful for JGit.

Make sure the CredentialsProvider gets reset on successive password
retrieval attempts. Otherwise it might always return the same non-
accepted password from a secure storage. (That one was discovered
by actually trying this via EGit; the JGit tests don't catch this.)

Change the default order of authentication mechanisms to prefer
password over keyboard-interactive. This is a mitigation for upstream
bug SSHD-866.[1]

Also include a fix for upstream bug SSHD-867.[2]

[1] https://issues.apache.org/jira/projects/SSHD/issues/SSHD-866
[2] https://issues.apache.org/jira/projects/SSHD/issues/SSHD-867

Bug: 520927
Change-Id: I423e548f06d3b51531016cf08938c8bd7acaa2a9
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoMove SshTestGitServer to new bundle org.eclipse.jgit.junit.ssh 81/132181/11
Thomas Wolf [Thu, 8 Nov 2018 15:58:52 +0000 (16:58 +0100)]
Move SshTestGitServer to new bundle org.eclipse.jgit.junit.ssh

Create the bundle and move the SshTestGitServer there. Verified that
the Eclipse build still works and ran JSchSshTest and ApacheSshTest as
junit tests inside Eclipse.

Update maven build and features to account for that. Verified by
running full maven build including packaging.

Update bazel build files to account for that. Verified by a
clean-slate bazel build :all, followed by running the JSchSshTest
and the ApacheSshTest via bazel.

Change-Id: Ia084942f4425b454529de148e00417e7da786a90
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoApache MINA sshd client: proxy support 92/131892/17
Thomas Wolf [Sun, 21 Oct 2018 17:44:34 +0000 (19:44 +0200)]
Apache MINA sshd client: proxy support

This is not about the ssh config ProxyCommand but about programmatic
support for HTTP and SOCKS5 proxies. Eclipse allows the user to
specify such proxies, and JSch at least contains code to connect
through proxies. So our Apache MINA sshd client also should be able
to do this.

Add interfaces and provide two implementations for HTTP and SOCKS5
proxies. Adapt the core code to be able to deal with proxy connections
at all. The built-in client-side support for this in sshd 2.0.0 is
woefully inadequate.

Tested manually by running proxies and then fetching various real-
world repositories via these proxies from different servers. Proxies
tested: ssh -D (SOCKS, anonymous), tinyproxy (HTTP, anonymous), and
3proxy (SOCKS & HTTP, username-password authentication). The GSS-API
authentication is untested since I have no Kerberos setup.

Bug: 520927
Change-Id: I1a5c34687d439b3ef8373c5d58e24004f93e63ae
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoApache MINA sshd client: don't leak upstream classes and interfaces 00/132500/3
Thomas Wolf [Thu, 15 Nov 2018 15:33:04 +0000 (16:33 +0100)]
Apache MINA sshd client: don't leak upstream classes and interfaces

We will get an API evolution problem if we expose as API classes and
interfaces that derive from upstream classes or interfaces. Upstream
interfaces also evolve quite erratically and evolution doesn't seem
to follow semantic versioning.

Introduce a new KeyPasswordProvider interface so that we don't have
to depend on the upstream FilePasswordProvider in our API. (We do
need _some_ abstraction for getting passwords for encrypted keys in
the API; EGit will need to provide its own implementation.)

Move some other upstream dependencies (HostConfigEntry, and various
previously protected methods in SshdSessionFactory) out of the API:
classes moved to internal space, and methods made private.

The only dependencies on upstream interfaces are thus in a few method
parameter types. Those cannot be avoided, but should also not pose
problems.

Bug: 520927
Change-Id: Idc9c6b0f237f29f46343c0fe15179242f2007bec
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoRemove unnecessary modifiers from interfaces 33/132533/1
Ivan Frade [Fri, 16 Nov 2018 05:27:20 +0000 (21:27 -0800)]
Remove unnecessary modifiers from interfaces

From Oracle's "Defining an interface":

"All abstract, default, and static methods in an interface are
implicitly public, so you can omit the public modifier."

(Without any modifier, the interface methods are also abstract, so we
omit also the "abstract")

"In addition, an interface can contain constant declarations. All
constant values defined in an interface are implicitly public, static,
and final. Once again, you can omit these modifiers."

This makes the code more consistent. Now all interfaces under
org.eclipse.jgit follow the guidelines.

Change-Id: I4fe6deb111899ec1b4318ab5a6050f3851fa1fd3
Signed-off-by: Ivan Frade <ifrade@google.com>
6 years agoMerge "Call unlockPack in finally"
David Pursehouse [Thu, 15 Nov 2018 03:11:26 +0000 (22:11 -0500)]
Merge "Call unlockPack in finally"

6 years agoFormat org.eclipse.jgit.pgm/BUILD with buildifier 37/132437/1
David Pursehouse [Wed, 14 Nov 2018 16:06:45 +0000 (08:06 -0800)]
Format org.eclipse.jgit.pgm/BUILD with buildifier

Change-Id: I08de1e262c56ffdd9f4bc9b58f7b43964cce969a
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
6 years agoAdd --ssh option to command-line commands 91/131891/10
Thomas Wolf [Thu, 18 Oct 2018 21:34:04 +0000 (23:34 +0200)]
Add --ssh option to command-line commands

Enables using the new ssh client based on Apache MINA sshd instead
of the old JSch client. The default is still JSch, so unless the
command is invoked with --ssh apache, there's no change.

I prefer this over some fiddling with the GIT_SSH environment variable
since that variable is handled in the JGit core bundle, which should
remain free of any dependency to org.eclipse.jgit.ssh.apache to avoid
problems in Gerrit or other JGit users that may use a different Apache
MINA sshd version.

Bug: 520927
Change-Id: I8460759c7113ef7887520fb0d297aa312200c69f
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoApache MINA sshd: use NumberOfPasswordPrompts for encrypted keys 90/131890/10
Thomas Wolf [Wed, 17 Oct 2018 18:22:26 +0000 (20:22 +0200)]
Apache MINA sshd: use NumberOfPasswordPrompts for encrypted keys

sshd only asks exactly once for the password. C.f. upstream issue
SSHD-850.[1] So we have to work around this limitation for now.
Once we move to sshd > 2.1.0, this can be simplified somewhat.

[1] https://issues.apache.org/jira/browse/SSHD-850

Bug: 520927
Change-Id: Id65650228486c5ed30affa9c62eac982e01ae207
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoMerge "Format BUILD files with buildifier"
David Pursehouse [Wed, 14 Nov 2018 05:27:01 +0000 (00:27 -0500)]
Merge "Format BUILD files with buildifier"

6 years agoFormat BUILD files with buildifier 83/132383/2
David Pursehouse [Wed, 14 Nov 2018 02:01:21 +0000 (18:01 -0800)]
Format BUILD files with buildifier

Change-Id: I7eb83e0560b1826c4f8567e9bc5fbdb2ae3fe9d0
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
6 years agoApache MINA sshd client: properly handle HostKeyAlgorithms config 89/131889/9
Thomas Wolf [Fri, 5 Oct 2018 19:35:16 +0000 (21:35 +0200)]
Apache MINA sshd client: properly handle HostKeyAlgorithms config

By default sshd will use its default built-in list, which matches
the one of openssh (as far as the algorithms exist in sshd at all).
But it doesn't handle HostKeyAlgorithms from the ssh config at all.

Implement this as in openssh, including the '+' and '-' modifiers
and reordering the default if there are known host keys for a
server already.

Add tests for the reordering.

Also use a more robust reader for the known hosts file. The default
aborts on the first error.

Bug: 520927
Change-Id: Ib1684440bfe2e96140536aa1a93c4bd4a0d35916
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoApache MINA sshd client: respect NumberOfPasswordPrompts 88/131888/9
Thomas Wolf [Wed, 3 Oct 2018 06:27:40 +0000 (08:27 +0200)]
Apache MINA sshd client: respect NumberOfPasswordPrompts

Set the internal property on the session as defined in the ssh config.

Note that NumberOfPasswordPrompts in openssh applies independently to
both user logins in keyboard-interactive authentication _and_ to
passphrases for identity files (encrypted keys). Apache MINA sshd uses
the setting only for keyboard-interactive authentication, but not for
identity file passphrase prompts. For identity files, it asks exactly
once. This has been reported as issue SSHD-850 upstream.[1]

[1] https://issues.apache.org/jira/browse/SSHD-850

Bug: 520927
Change-Id: I390ffe9e1c52b96d3e8e28fd8edbdc73dde9edb4
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
6 years agoApache MINA sshd client: add gssapi-with-mic authentication 87/131887/9
Thomas Wolf [Tue, 2 Oct 2018 20:39:40 +0000 (22:39 +0200)]
Apache MINA sshd client: add gssapi-with-mic authentication

sshd does support gssapi-with-mic on the server side, but has no
built-in client-side support for this authentication mechanism.

Add our own implementation for it, following RFC 4462.[1] To avoid
needlessly re-trying mechanisms that aren't even configured on the
client, we disable mechanisms that fail on the very first attempt
to use them.

Since we have no real Kerberos5 test setup, this cannot be fully
tested in CI. The disabling of the authentication mechanism and
that it is skipped when not successful _is_ tested.

[1] https://www.ietf.org/rfc/rfc4462.txt

Bug: 520927
Change-Id: I5d0cdb14103588a57c52f927df541b589ab88d88
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>