summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Prepare 5.12.0-SNAPSHOT buildsMatthias Sohn2021-05-0688-121/+121
| | | | Change-Id: I2fc5305e7eaaa4593d418fc3b31d20e4b6e1e585
* JGit v5.12.0.202105051250-m2v5.12.0.202105051250-m2Matthias Sohn2021-05-0588-121/+121
| | | | | Change-Id: Ic7d86c91ec0ff9aa0678dcb971c197e62a4ca2dc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge "[releng] Update eclipse-jarsigner-plugin to 1.3.1"Matthias Sohn2021-04-261-1/+1
|\
| * [releng] Update eclipse-jarsigner-plugin to 1.3.1Thomas Wolf2021-04-191-1/+1
| | | | | | | | | | | | | | | | Up from 1.1.7. See [1] for the reason. [1] https://www.eclipse.org/lists/cbi-dev/msg02374.html Change-Id: Ia7c1c9f443793ce476acd6ddfe521ea488a1a60b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Update jetty to 9.4.40.v20210413Matthias Sohn2021-04-2318-335/+335
|/ | | | Change-Id: I5585b9a22bf20a49ad4bb9a24e053325792ec546 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Implement ours/theirs content conflict resolutionThomas Wolf2021-04-1915-114/+1085
| | | | | | | | | | | | | | | | | | | | | | | | | | | Git has different conflict resolution strategies: * There is a tree merge strategy "ours" which just ignores any changes from theirs ("-s ours"). JGit also has the mirror strategy "theirs" ignoring any changes from "ours". (This doesn't exist in C git.) Adapt StashApplyCommand and CherrypickCommand to be able to use those tree merge strategies. * For the resolve/recursive tree merge strategies, there are content conflict resolution strategies "ours" and "theirs", which resolve any conflict hunks by taking the "ours" or "theirs" hunk. In C git those correspond to "-Xours" or -Xtheirs". Implement that in MergeAlgorithm, and add API to set and pass through such a strategy for resolving content conflicts. * The "ours/theirs" content conflict resolution strategies also apply for binary files. Handle these cases in ResolveMerger. Note that the content conflict resolution strategies ("-X ours/theirs") do _not_ apply to modify/delete or delete/modify conflicts. Such conflicts are always reported as conflicts by C git. They do apply, however, if one side completely clears a file's content. Bug: 501111 Change-Id: I2c9c170c61c440a2ab9c387991e7a0c3ab960e07 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* ssh: ensure list is modifiable before using Iterator.remove().Thomas Wolf2021-04-141-2/+2
| | | | | Bug: 572849 Change-Id: If6be0024d2069e2d85541d7e87c6b0371db4b3df Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Update orbit to S20210406213021 and add 4.20-staging targetMatthias Sohn2021-04-1031-42/+212
| | | | Change-Id: I465831b0edf359b504918009dd7fb03a77b06305 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix typo in test method nameThomas Wolf2021-04-091-1/+1
| | | | Change-Id: I34718829435daf8ded4ce596c824dd3cfbafbaf6 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Merge "Upgrade ecj to 3.25.0"Matthias Sohn2021-04-071-1/+1
|\
| * Upgrade ecj to 3.25.0Marco Miller2021-03-301-1/+1
| | | | | | | | | | Change-Id: I09d018205564205b194de020941fd4152ae8b24e Signed-off-by: Marco Miller <marco.miller@ericsson.com>
* | Allow file mode conflicts in virtual base commit on recursive merge.Marija Savtchouk2021-04-062-9/+88
| | | | | | | | | | | | | | | | | | Similar to https://git.eclipse.org/r/c/jgit/jgit/+/175166, ignore path that have conflicts on attributes, so that the virtual base could be used by RecursiveMerger. Change-Id: I99c95445a305558d55bbb9c9e97446caaf61c154 Signed-off-by: Marija Savtchouk <mariasavtchouk@google.com>
* | sshd: don't lock the known_hosts files on readingThomas Wolf2021-04-013-23/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar to git config file reading lock the file only when writing. There may still be lock conflicts on writing, but those in the worst case result in an entry not being added and thus being asked for later again. Because the OpenSshServerkeyDatabase and its HostKeyFiles may be (and usually are) shared between different SSH sessions, we still need to ensure in-process mutual exclusion. Bug: 559548 Change-Id: I4af97628deff9eaac2520576917c856949f2680d Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Allow info messages in UsernamePasswordCredentialsProviderThomas Wolf2021-04-011-7/+17
| | | | | | | | | | | | | | | | | | o.e.j.ssh.apache produces passphrase prompts containing InformationalMessage items to show the fingerprint of the key the passphrase is being asked for. Allow this so that the credentials provider can be used with o.e.j.ssh.apache. Change-Id: Ibc2ffd3a987d3118952726091b9b80442972dfd8 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | ssh config: do environment variable replacementThomas Wolf2021-04-012-29/+76
| | | | | | | | | | | | | | | | | | OpenSSH 8.4 has introduced simple environment variable substitution for some keys. Implement that feature in our ssh config file parser, too. Bug: 572103 Change-Id: I360f2c5510eea4ec3329aeedf3d29dfefc9163f0 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | sshd: implement server-sig-algs SSH extension (client side)Thomas Wolf2021-04-016-15/+279
|/ | | | | | | | | | | | | | | | | | | | | | | | | | Apache MINA sshd has an implementation of this, but it doesn't comply to RFC 8308 [1] and it is buggy. (See SSHD-1141 [2].) Add a simpler KexExtensionHandler and if the server sends extension server-sig-algs, use its value to re-order the chosen signature algorithms such that the algorithms the server announced as supported are at the front. If the server didn't tell us anything, don't do anything. RFC 8308 suggests for RSA to default to ssh-rsa, but says once rsa-sha2-* was "widely enough" adopted, defaulting to that might be OK. Currently we seem to be in a transition phase; Fedora 33 has already disabled ssh-rsa by default, and openssh is about to do so. Whatever we might do without info from the server, it'd be good for some servers and bad for others. So don't do anything and let the user re-order via ssh config PubkeyAcceptedAlgorithms on a case-by-case basis. [1] https://tools.ietf.org/html/rfc8308 [2] https://issues.apache.org/jira/browse/SSHD-1141 Bug: 572056 Change-Id: I59aa691a030ffe0fae54289df00ca5c6e165817b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Bazel: Remove unused dependencies flagged by unused_depsDavid Ostrovsky2021-03-271-9/+3
| | | | | Change-Id: I7fcb494fdce4bb3de203236fa51b188b099d842f Signed-off-by: David Ostrovsky <david@ostrovsky.org>
* Bazel: Format build file with buildifierDavid Ostrovsky2021-03-272-3/+3
| | | | | Change-Id: I4c0c7ffb04d7bed517faf1a4932d8c76738bff11 Signed-off-by: David Ostrovsky <david@ostrovsky.org>
* Upgrade wagon-ssh to 3.4.3Marco Miller2021-03-262-2/+2
| | | | | Change-Id: Ibc3a9ea83e264920b4a995f6d22904fe3be97d5a Signed-off-by: Marco Miller <marco.miller@ericsson.com>
* Update spring-boot-maven-plugin to 2.4.4Matthias Sohn2021-03-261-1/+1
| | | | Change-Id: I8ba1e544b2e80ad66aacd230c4a442bdc1d60375
* Update spotbugs-maven-plugin to 4.2.2Matthias Sohn2021-03-261-1/+1
| | | | Change-Id: Ib522b66249e5493c3fd191b5c56e87f8941569c2
* Update japicmp-maven-plugin to 0.15.3Matthias Sohn2021-03-262-2/+3
| | | | Change-Id: I3b1b295e7f97182a5541b1912e0acbfffb981d71
* Merge branch 'stable-5.11'Matthias Sohn2021-03-2616-170/+582
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.11: Refactor CommitCommand to improve readability CommitCommand: fix formatting CommitCommand: remove unncessary comment Ensure post-commit hook is called after index lock was released sshd: try all configured signature algorithms for a key sshd: modernize ssh config file parsing sshd: implement ssh config PubkeyAcceptedAlgorithms Change-Id: Ic3235ffd84c9d7537a1fe5ff4f216578e6e26724 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Refactor CommitCommand to improve readabilityMatthias Sohn2021-03-231-72/+90
| | | | | | | | Change-Id: Id3cac81cd32c07f677b7f669d58e32b5290e1790 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * CommitCommand: fix formattingMatthias Sohn2021-03-231-2/+1
| | | | | | | | Change-Id: I5efd1ffee4ebb08b3b5c27e29162493615727840 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * CommitCommand: remove unncessary commentMatthias Sohn2021-03-231-1/+0
| | | | | | | | | | | | Let the code speak for itself. Change-Id: I6a6d6c327ffac23fc607295a7f4fd3131b3d1e58 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Ensure post-commit hook is called after index lock was releasedMatthias Sohn2021-03-233-6/+19
| | | | | | | | | | | | | | Otherwise a post-commit hook cannot modify the index. Bug: 566934 Change-Id: I0093dccd93b2064f243544b516bdce198afdb18b Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * sshd: try all configured signature algorithms for a keyThomas Wolf2021-03-194-3/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For RSA keys, there may be several configured signature algorithms: rsa-sha2-512, rsa-sha2-256, and ssh-rsa. Upstream sshd has bug SSHD-1105 [1] and always and unconditionally uses only the first configured algorithm. With the default order, this means that it cannot connect to a server that knows only ssh-rsa, like for instance Apache MINA sshd servers older than 2.6.0. This affects for instance bitbucket.org or also AWS Code Commit. Re-introduce our own pubkey authenticator that fixes this. Note that a server may impose a penalty (back-off delay) for subsequent authentication attempts with signature algorithms unknown to the server. In such cases, users can re-order the signature algorithm list via the PubkeyAcceptedAlgorithms (formerly PubkeyAcceptedKeyTypes) ssh config. [1] https://issues.apache.org/jira/browse/SSHD-1105 Bug: 572056 Change-Id: I7fb9c759ab6532e5f3b6524e9084085ddb2f30d6 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
| * sshd: modernize ssh config file parsingThomas Wolf2021-03-192-22/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | OpenSSH has changed some things in ssh config files. Update our parser to implement some of these changes: * ignore trailing comments on a line * rename PubkeyAcceptedKeyTypes to PubkeyAcceptedAlgorithms Note that for the rename, openSSH still accepts both names. We do the same, translating names whenever we get or set values. Change-Id: Icccca060e6a4350a7acf05ff9e260f2c8c60ee1a Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
| * sshd: implement ssh config PubkeyAcceptedAlgorithmsThomas Wolf2021-03-198-66/+184
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apache MINA sshd 2.6.0 appears to use only the first appropriate public key signature algorithm for a particular key. See [1]. For RSA keys, that is rsa-sha2-512. This breaks authentication at servers that only know the older (and deprecated) ssh-rsa algorithm. With PubkeyAcceptedAlgorithms, users can re-order algorithms in the ssh config file per host, if needed. Setting PubkeyAcceptedAlgorithms ^ssh-rsa will put "ssh-rsa" at the front of the list of algorithms, and then authentication at such servers with RSA keys works again. [1] https://issues.apache.org/jira/browse/SSHD-1105 Bug: 572056 Change-Id: I86c3b93f05960c68936e80642965815926bb2532 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Optimize RevWalkUtils.findBranchesReachableFrom()Adithya Chakilam2021-03-142-10/+41
| | | | | | | | | | | | | | | | | | | | | | In [1], improved RevWalk.getMergedInto() is introduced to avoid repeated work while performing RevWalk.isMergedInto() on many refs. Modify findBranchesReachableFrom() to use it. [1] I65de9873dce67af9c415d1d236bf52d31b67e8fe Change-Id: I81d615241638d4093df64b449637af601843a5ed Signed-off-by: Adithya Chakilam <quic_achakila@quicinc.com>
* | Introduce getMergedInto(RevCommit commit, Collection<Ref> refs)Adithya Chakilam2021-03-143-0/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cases where we need to determine if a given commit is merged into many refs, using isMergedInto(base, tip) for each ref would cause multiple unwanted walks. getMergedInto() marks the unreachable commits as uninteresting which would then avoid walking that same path again. Using the same api, also introduce isMergedIntoAny() and isMergedIntoAll() Change-Id: I65de9873dce67af9c415d1d236bf52d31b67e8fe Signed-off-by: Adithya Chakilam <quic_achakila@quicinc.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Skip detecting content renames for large filesYoussef Elghareeb2021-03-143-0/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two code paths for detecting renames: one on tree diffs (using DiffFormatter#scan) and the other on single file diffs (using DiffFormatter#format). The latter skips binary and large files for rename detection - check [1], but the former doesn't. This change skips content rename detection for the tree diffs case for large files. This is essential to avoid expensive computations while reading the file, especially for callers who don't want to pay that cost. Content renames are those which involve files with slightly modified content. Exact renames will still be identified. The default threshold for file sizes is reused from PackConfig.DEFAULT_BIG_FILE_THRESHOLD: 50 MB. [1] https://git.eclipse.org/r/plugins/gitiles/jgit/jgit/+/232876421d067a1242e8afcaa33b9171342fee3e/org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java#386 Change-Id: Idbc2c29bd381c6e387185204638f76fda47df41e Signed-off-by: Youssef Elghareeb <ghareeb@google.com>
* | Remove unused API problem filtersMatthias Sohn2021-03-132-68/+0
| | | | | | | | Change-Id: I34be8afa42971b94d86312ff8b672b133cd23d45 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Document http options supported by JGitThomas Wolf2021-03-131-0/+20
| | | | | | | | Change-Id: I0af4f9991fdb4f09de25f743d1e0dca67ceaa18b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | HTTP cookies: do tilde expansion on http.cookieFileThomas Wolf2021-03-123-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Git config http.cookieFile must have ~ expansion, compare [1]. It also should be an absolute path. While a relative path is allowed, C git just passes the value on to libcurl, so it'll be relative to the current working directory and thus not work in all directories. Log a warning if the path is relative. (Alternatives would be to throw an exception, or to resolve the path relative to the .git directory, or relative to the working tree root, or relative to the config file it occurs in. But C git does not seem to do either.) [1] https://github.com/git/git/commit/e5a39ad8e Bug: 571798 Change-Id: I5cdab6061d0613ac7d8cb7977e5b97f5b88f562d Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | Prepare 5.12.0-SNAPSHOT buildsMatthias Sohn2021-03-1088-504/+504
| | | | | | | | | | Change-Id: I736de7c3deb11da75777d459f47332df0b486443 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge branch 'stable-5.11'Matthias Sohn2021-03-10117-547/+547
|\| | | | | | | | | | | | | | | | | | | | | * stable-5.11: Update Orbit to R20210223232630 Prepare 5.11.1-SNAPSHOT builds JGit v5.11.0.202103091610-r Prepare 5.11.0-SNAPSHOT builds JGit v5.11.0.202103031150-rc1 Change-Id: I808e53a3c54a49d0dd62c69818ea2f5672e16a91
| * Update Orbit to R20210223232630Matthias Sohn2021-03-1029-44/+44
| | | | | | | | Change-Id: I7577131b2c6e808b59f6c453233b261c64646d35 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 5.11.1-SNAPSHOT buildsMatthias Sohn2021-03-0988-503/+503
| | | | | | | | | | Change-Id: I94628ccbb5099a65aa4345cfd28a141ff5555b68 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v5.11.0.202103091610-rv5.11.0.202103091610-rMatthias Sohn2021-03-0988-121/+121
| | | | | | | | | | Change-Id: I8e6855eaf7228459f492036feb4e34ca085698a7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Merge branch 'master' into stable-5.11Matthias Sohn2021-03-0922-276/+790
| |\ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: Manually set status of jmh dependencies Update DEPENDENCIES report for 5.11.0 Add dependency to dash-licenses PackFile: Add id + ext based constructors GC: deleteOrphans: Use PackFile PackExt: Convert to Enum Restore preserved packs during missing object seeks Pack: Replace extensions bitset with bitmapIdx PackFile PackDirectory: Use PackFile to ensure we find preserved packs GC: Use PackFile to de-dup logic Create a PackFile class for Pack filenames Change-Id: I1d56517cb6a95e10aed22cdb9e5f3e504872d110
* | Manually set status of jmh dependenciesMatthias Sohn2021-03-071-2/+2
| | | | | | | | | | | | | | | | | | The following jmh dependencies were approved as works-with: - jmh-core/1.21 has GPL-2.0 license and was approved in CQ20517 - jmh-generator-annprocess/1.21 has GPL-2.0 license and was approved in CQ20518 Change-Id: Ibbe28c6e8359c576b23f40281e74f2e0d4a0dee0
* | Update DEPENDENCIES report for 5.11.0Matthias Sohn2021-03-071-0/+66
| | | | | | | | | | | | | | | | Computed by dash license-tool-plugin [1]. [1] https://github.com/eclipse/dash-licenses Change-Id: I28727115914613cefdcf9a9f462c195b6af23156
* | Add dependency to dash-licensesMatthias Sohn2021-03-071-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is required to run the license check using the license tool [1] required by the Eclipse project handbook [2]: mvn org.eclipse.dash:license-tool-plugin:license-check -Ddash.summary=DEPENDENCIES Note: the tool still requires Java 11 hence it needs to be run in a separate build step and is not yet integrated in the build which runs on Java 8. [1] https://github.com/eclipse/dash-licenses [2] https://www.eclipse.org/projects/handbook/#ip-license-tool Change-Id: Ib41d54de246c3c9499cc3be9f026294c39fdfd99
* | PackFile: Add id + ext based constructorsNasser Grainawi2021-03-0711-62/+106
| | | | | | | | | | | | | | | | | | | | | | Add new constructors to PackFile to improve a common use case where callers know the directory, id, and extension, but previously needed to construct a valid file name (with prefix, '.', etc) to create a PackFile. Most callers can use the variant that has id as an ObjectId, but provide an id as String variant too. Change-Id: I39e4466abe8c9509f5916d5bfe675066570b8585 Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
* | GC: deleteOrphans: Use PackFileNasser Grainawi2021-03-041-13/+16
| | | | | | | | | | | | | | | | It's easier to follow the logic here when we can use our own objects instead of Strings. Change-Id: I6a166edcc67903fc1ca3544f458634c4cef8fde7 Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
* | PackExt: Convert to EnumNasser Grainawi2021-03-042-56/+19
| | | | | | | | | | | | | | | | | | | | This class already looked very much like an Enum, but wasn't one. As an Enum, we can use PackExt in EnumMaps and EnumSets. Convert the Map key usage in PackDirectory to an EnumMap. Change-Id: Ice097fd468a05805f914e6862fbd1d96ec8c45d1 Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
* | Restore preserved packs during missing object seeksMartin Fick2021-03-043-12/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Provide a recovery path for objects being referenced during the pack pruning race. Due to the pack pruning race, it is possible for objects to become referenced after a pack has been deemed safe to prune, but before it actually gets pruned. If this happened previously, the newly referenced objects would be missing and potentially result in a corrupted ref. Add the ability to recover from this situation when an object is missing but happens to still be available in a pack in the "preserved" directory. This is likely only useful when used in conjunction with the --preserve-old-packs GC option, which prunes packs by hard-linking to the preserved directory. If an object is missing and found in a pack in the preserved directory, immediately recover that pack and its associated files (idx, bitmaps...) by moving them back to the original pack directory, and then retry the operation that would have failed due to the missing object. This retry can now succeed and the repository may avoid corruption. This approach should drastically reduce the chance of a corrupt repository during pack pruning at very little extra cost. This extra cost should only be incurred when objects are missing and a failure would normally occur. Change-Id: I2a704e3276b88cc892159d9bfe2455c6eec64252 Signed-off-by: Martin Fick <quic_mfick@quicinc.com> Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
* | Pack: Replace extensions bitset with bitmapIdx PackFileNasser Grainawi2021-03-044-48/+40
| | | | | | | | | | | | | | | | | | The only extension that was ever consulted from the bitmap was the bitmap index. We can simplify the Pack code as well as the code of all the callers if we focus on just that usage. Change-Id: I799ddfdee93142af67ce5081d14a430d36aa4c15 Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>