summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
Commit message (Collapse)AuthorAgeFilesLines
* JGit v5.10.0.202011041322-m2v5.10.0.202011041322-m2Matthias Sohn2020-11-042-2/+2
| | | | | Change-Id: Ia2709321f61f61208350eaa8aa48e56b88455146 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Update slf4j to 1.7.30Matthias Sohn2020-10-281-1/+1
| | | | | Bug: 566475 Change-Id: Ia3e5b72d53ead435e4677e46c73a3ff45a606b41 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Ensure .gitmodules is loaded when accessing submodule nameJohn Dallaway2020-10-251-0/+1
| | | | | | | | | | | | This problem occurred when calling SubmoduleWalk#getModuleName if the first submodule processed has a name and a path which do not match SubmoduleWalk#getModuleName returned the module path instead of the module name. In order to fix this SubmoduleWalk#getModuleName needs to ensure that the modules config is loaded. Bug: 565776 Change-Id: I36ce1fbc64c4849f9d8e39864b825c6e28d344f8 Signed-off-by: John Dallaway <john@dallaway.org.uk> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Export new package org.eclipse.jgit.logging and import it where usedMatthias Sohn2020-10-251-0/+1
| | | | | Change-Id: Ib81b8733e184e75c2cba21ab27c4bbe8dbe0b04d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge "Add new performance logging"Terry Parker2020-10-211-0/+66
|\
| * Add new performance loggingAlexa Panfil2020-10-211-0/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add new performance logging to register events of type duration. The proposed logging is similar to the performance logging in OS Gerrit https://gerrit-review.googlesource.com/c/gerrit/+/225628: a global Singleton (LoggingContext in Gerrit) is collecting the performance logs in a thread-safe events list, and at the end of the monitored command the list of events is retrieved and written to a log, after which it is cleared. What this patch does: The main component is the Singleton (PerformanceLogContext), which is used to collect the records (PerformanceLogRecord) in one place (ThreadLocal eventsList) from anywhere using PerformanceLogContext.getInstance().addEvent(). Reason why this change is needed: The current monitoring in JGit has several issues: 1. git fetch and git push events are handled separately (PackStatistics and ReceivedPackStatistics), with no unified way of writing or reading the statistics. 2. PostUploadHook is only invoked on the event of sending the pack, which means that the PackStatistics is not available for the fetch requests that did not end with sending the pack (negotiation requests). 3. The way the logs are created is different from the performance log approach, so the long-running operations need to be collected from both performance log (for JGit DFS overridden operations and Gerrit operations) and gitlog (for JGit ones). The proposed performance logging is going to solve the above mentioned issues: it collects all of the performance logs in one place, thus accounting for the commands that do not result in sending a pack. The logs are compatible with the ones on Gerrit. Moreover, the Singleton is accessible anywhere in the call stack, which proved to be successful in other projects like Dapper (https://research.google/pubs/pub36356/). Signed-off-by: Alexa Panfil <alexapizza@google.com> Change-Id: Iabfe667a3412d8a9db94aabb0f39b57f43469c41
* | Merge "Implement git describe --all"Christian Halstrick2020-10-131-1/+46
|\ \
| * | Implement git describe --allJason Yeo2020-10-131-1/+46
| | | | | | | | | | | | | | | | | | | | | | | | This enables jgit to use any refs in the refs/ namespace when describing commits. Signed-off-by: Jason Yeo <jasonyeo88@gmail.com> Change-Id: I1fa22d1c39c0e2f5e4c2938c9751d8556494ac26
* | | Override config http.userAgent from environment GIT_HTTP_USER_AGENTThomas Wolf2020-10-061-2/+31
| |/ |/| | | | | | | | | | | | | | | According to [1], environment variable GIT_HTTP_USER_AGENT can override a git config http.userAgent. [1] https://git-scm.com/docs/git-config#Documentation/git-config.txt-httpuserAgent Change-Id: I996789dc49faf96339cd7b4e0a682b9bcafb6f70 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | UploadPackTest#testUploadRedundantBytes: ensure test repo is closedMatthias Sohn2020-10-021-7/+10
|/ | | | | | This fixes a resource leak warning. Change-Id: I65166eeefc719ea577963c84ce2059e2d7e6c1d7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Support "http.userAgent" and "http.extraHeader" from the git configJames Wynn2020-09-262-0/+113
| | | | | | | | | | | | | | | | Validate the extra headers and log but otherwise ignore invalid headers. An empty http.extraHeader starts the list afresh. The http.userAgent is restricted to printable 7-bit ASCII, other characters are replaced by '.'. Moves a support method from the ssh.apache bundle to HttpSupport in the main JGit bundle. Bug:541500 Change-Id: Id2d8df12914e2cdbd936ff00dc824d8f871bd580 Signed-off-by: James Wynn <james@jameswynn.com> Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Measure time taken for reachability checksAlexa Panfil2020-09-241-11/+122
| | | | | | | | | | | | | Reason why this change is needed: Getting this metric will help estimate how much time will be saved once the reachability checks get optimized What this patch does: Measure time spent by requestValidator.checkWants() in parseWants() and save it in an instance of PackStatistics.Accumulator. Signed-off-by: Alexa Panfil <alexapizza@google.com> Change-Id: Id7fe4016f96549d9511a2c24052dad93cfbb31a4
* IndexDiffFilter: handle path prefixes correctlyThomas Wolf2020-09-211-0/+21
| | | | | | | | | | | When comparing git directory paths to check whether one is a prefix of another, one must add a slash to avoid false prefix matches when one directory name is a prefix of another. The path "audio" is not a prefix of the path "audio-new", but would be a prefix of a path "audio/new". Bug: 566799 Change-Id: I6f671ca043c7c2c6044eb05a71dc8cca8d0ee040 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Merge "ReceivePackStats: Add size and count of unnecessary pushed objects"Terry Parker2020-09-141-0/+61
|\
| * ReceivePackStats: Add size and count of unnecessary pushed objectsYunjie Li2020-09-111-0/+61
| | | | | | | | | | | | | | | | | | | | | | | | Since there is no negotiation for a push, the client is probably sending redundant objects and bytes which already exist in the server. Add more metrics in the stats to quantify it. Duplicated size and number to measure the size and the number of duplicated objects which should not be pushed. Change-Id: Iaacd4761ee9366a0a7ec4e26c508eff45c8744de Signed-off-by: Yunjie Li <yunjieli@google.com>
* | Merge branch 'stable-5.9' into masterMatthias Sohn2020-09-091-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.9: Prepare 5.9.1-SNAPSHOT builds JGit v5.9.0.202009080501-r [releng] Enable japicmp for the fragments added in 5.8.0 GitlinkMergeTest: fix boxing warnings Remove unused API problem filters Add missing since tag on BundleWriter#addObjectsAsIs GPG: include signer's user ID in the signature Change-Id: Iaa96f9228752540f446fc232a49f31a738fd8d30 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Prepare 5.9.1-SNAPSHOT buildsMatthias Sohn2020-09-082-54/+54
| | | | | | | | | | | | | | | Change-Id: I9006e7961111982943ffef496d15bd525959b3e4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | JGit v5.9.0.202009080501-rv5.9.0.202009080501-rMatthias Sohn2020-09-082-2/+2
| | | | | | | | | | | | | | | Change-Id: Ic98ae61b3f327ef72256fd9b2e28510e3a481de7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | GitlinkMergeTest: fix boxing warningsMatthias Sohn2020-09-051-1/+1
| | | | | | | | | | | | Change-Id: I4bdf1ab3e7d7e9d96318e2b16b792aa98ebd2ecd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Merge branch 'master' into stable-5.9Matthias Sohn2020-09-052-0/+453
| |\ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: SshdSession: close channel gracefully jgit: Add DfsBundleWriter Prepare 5.10.0-SNAPSHOT builds ResolveMerger: do not content-merge gitlinks on del/mod conflicts ResolveMerger: Adding test cases for GITLINK deletion ResolveMerger: choose OURS on gitlink when ignoreConflicts ResolveMerger: improving content merge readability ResolveMerger: extracting createGitLinksMergeResult method ResolveMerger: Adding test cases for GITLINK merge Back out the version change to 5.10.0-SNAPSHOT which was done on master already. Change-Id: I1a6b1f0b8f5773be47823d74f593d13b16a601d5 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Prepare 5.9.0-SNAPSHOT buildsMatthias Sohn2020-08-272-2/+2
| | | | | | | | | | | | | | | Change-Id: Ia3e8382ec503150979d8acb6161031ccfb7fd921 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | JGit v5.9.0.202008260805-m3v5.9.0.202008260805-m3Matthias Sohn2020-08-262-2/+2
| | | | | | | | | | | | | | | Change-Id: Ic4de8340f3ab038e38b239b725b8bd6d6dbee413 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | jgit: Add DfsBundleWriterMasaya Suzuki2020-09-031-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DfsBundleWriter writes out the entire repository to a Git bundle file. It packs all objects included in the packfile by concatenating all pack files. This makes the bundle creation fast and cheap. Useful for backing up a repository as-is. Change-Id: Iee20e4b1ab45b2a178dde8c72093c0dd83f04805 Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
* | | Merge changes from topic "fix_ui"Terry Parker2020-09-031-0/+368
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * changes: ResolveMerger: do not content-merge gitlinks on del/mod conflicts ResolveMerger: Adding test cases for GITLINK deletion ResolveMerger: choose OURS on gitlink when ignoreConflicts ResolveMerger: improving content merge readability ResolveMerger: extracting createGitLinksMergeResult method ResolveMerger: Adding test cases for GITLINK merge
| * | | ResolveMerger: do not content-merge gitlinks on del/mod conflictsDemetr Starshov2020-08-261-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously ResolveMerger tried to make a fulltext merge entry in case one of sides got deleted regardless of file mode. This is not applicable for GITLINK type of entry. After this change it is rendering appropriate merge result. Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: Ibdb4557bf8781bdb48bcee6529e37dc80582ed7e
| * | | ResolveMerger: Adding test cases for GITLINK deletionDemetr Starshov2020-08-261-0/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add test cases which cover content-merge resolve logic for deletion. Sign-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: I2f2b37e29adc973a5a0cfcc5c8bc32a2c38efdfa
| * | | ResolveMerger: choose OURS on gitlink when ignoreConflictsDemetr Starshov2020-08-261-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Option ignoreConflicts is used when a caller want to create a virtual commit and use it in a future merge (recursive merge) or show it on UI (e.g. Gerrit). According to contract in case of ignoreConflicts ResolveMerger should populate only stage 0 for entries with merge conflicts as if there is no conflict. Current implementation breaks this contract for cases when gitlink revision is ambiguous. Therefore, always select 'ours' when we merge in ignoreConflicts mode. This will satisfy the contract contract, so recursive merge can succeed, however it is an arbitrary decision, so it is not guaranteed to select best GITLINK in all cases. GITLINK merging is a special case of recursive merge because of limitations of GITLINK type of entry. It can't contain more than 1 sha-1 so jgit can't write merge conflicts in place like it can with a blob. Ideally we could signal the conflict with a special value (like '0000...'), but that must be supported by all tooling (git fsck, c-git)." Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: Id4e9bebc8e828f7a1ef9f83259159137df477d89
| * | | ResolveMerger: Adding test cases for GITLINK mergeDemetr Starshov2020-08-261-0/+291
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add test cases which cover content-merge resolve logic. Git clients try to agressively merge blobs by content, but GITLINK types of entries can't be merged with each other or with blobs. This change ensures all possible permutations which can trigger blob and GITLINK content merge are covered. Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: I7e83a28a14d4d2f9e0ba2b1cffbf3224fb7f3fef
* | | Prepare 5.10.0-SNAPSHOT buildsMatthias Sohn2020-08-272-54/+54
| |/ |/| | | | | | | Change-Id: I9a2b39e9e85f27179ceb3b1709d75c466089a3bc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Fix possible NegativeArraySizeException in PackIndexV1Marc Strapetz2020-08-255-0/+32
| | | | | | | | | | | | | | | | | | Due to an integer overflow bug, the current "Index file is too large for jgit" check did not work properly and subsequently a NegativeArraySizeException was raised. Change-Id: I2736efb28987c29e56bc946563b7fa781898a94a Signed-off-by: Marc Strapetz <marc.strapetz@syntevo.com>
* | Keep line endings for text files committed with CR/LF on text=autoThomas Wolf2020-08-175-117/+291
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Git never converts line endings if the version in the repository is a text file with CR/LF and text=auto. See [1]: "When the file has been committed with CRLF, no conversion is done." Because the sentence just before is about converting line endings on check-in, I had understood that in commit 60cf85a [2] to mean that no conversion on check-in was to be done. However, as bug 565048 and a code inspection of the C git code showed it really means no conversion is done on check-in *or check-out*. If the text attribute is not set but core.autocrlf = true, this is the same as text=auto eol=crlf. C git does not convert on check-out even on text=auto eol=lf if the index version is a text file with CR/LF. For check-in, one has to look at the intended target, which is done in WorkingTreeIterator since commit 60cf85a. For check-out, it can be done by looking at the source and can thus be done in the AutoLFOutputStream. Additionally, provide a constructor for AutoLFInputStream to do the same; for cases where the equivalent of a check-out is done via an input stream obtained from a blob. (EGit does that in its GitBlobStorage for the Eclipse compare framework; it's more efficient than using a TemporaryBuffer and DirCacheCheckout.getContent(), and it avoids the need for a temporary file.) Adapt existing tests, and add new checkout and merge tests to verify the resulting files have the correct line endings. EGit's GitBlobStorage will need to call the new version of EolStreamTypeUtil.wrapInputStream(). [1] https://git-scm.com/docs/gitattributes#Documentation/gitattributes.txt-Settostringvalueauto [2] https://git.eclipse.org/r/c/jgit/jgit/+/127324 Bug: 565048 Change-Id: If1282ef43e2abd00263541bd10a01fe1f5c619fc Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | DirCache: support index V4Thomas Wolf2020-08-154-2/+266
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Index format version 4 was introduced in C git in 2012. It's about time that JGit can deal with it. Version 4 added prefix path compression. Instead of writing the full path for each index entry to disk, only the difference to the previous entry's path is written: a variable-encoded int telling how many bytes to remove from the previous entry's path to get the common prefix, followed by the new suffix. Also, cache entries in a version 4 index are not padded anymore. Internally, version 3 and version 4 index entries are identical; it's only the stored format that changes. Implement this path compression, and make sure we write an index file that we read previously in the same format. (Only changing from version 2 to version 3 if there are extended flags.) Add support for the "feature.manyFiles" and the "index.version" git configs, and honor them when writing a new index file. Add tests, including a compatibility test that verifies that JGit can read a version 4 index generated by C git and write an identical version 4 index. Bug: 565774 Change-Id: Id83241cf009e50f950eb42f8d56b834fb47da1ed Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Do not send empty blob in response to blob:none filterJonathan Nieder2020-07-293-2/+26
| | | | | | | | | | | | | | | | | | | | | | | | If I create a repository containing an empty file and clone it with git clone --no-checkout --filter=blob:none \ https://url/of/repository then I would expect no blobs to be transferred over the wire. Alas, JGit rewrites filter=blob:none to filter=blob:limit=0, so if the repository contains an empty file then the empty blob gets transferred. Fix it by teaching JGit about filters based on object type to complement the existing filters based on object size. This prepares us for other future filters such as object:none. In particular, this means we do not need to look up the size of the filtered blobs, which should speed up clones. Noticed by Anna Pologova and Terry Parker. Change-Id: Id4b234921a190c108d8be2c87f54dcbfa811602a Signed-off-by: Jonathan Nieder <jrn@google.com>
* Add support for tree filters when fetchingJonathan Nieder2020-07-291-0/+32
| | | | | | | | | | | | | | Teach the FilterSpec serialization code about tree filters so they can be communicated over the wire and understood by the server. While we're here, harden the FilterSpec serialization code to throw IllegalStateException if we encounter a FilterSpec that cannot be expressed as a "filter" line. The only public API for creating a Filterspec is to pass in a "filter" line to be parsed, so these should not appear in practice. Change-Id: I9664844059ffbc9c36eb829e2d860f198b9403a0 Signed-off-by: Jonathan Nieder <jrn@google.com>
* DiffFormatter: correctly deal with tracked files in ignored foldersThomas Wolf2020-07-171-1/+55
| | | | | | | | | | | | | | | | | | | | | | | | In JGit 5.0, the FileTreeIterator was changed to skip ignored folders by default. To catch tracked files inside ignored folders, the tree walk needs to have a DirCacheIterator, and the FileTreeIterator has to know about that DirCacheIterator via setDirCacheIterator(). (Or the optimization has to be switched off explicitly via setWalkIgnoredDirectories(true).) Skipping ignored directories is an important optimization in some cases, for instance in node.js/npm projects, where we'd otherwise traverse the whole huge and deep hierarchy of the typically ignored node_modules folder. While all uses of WorkingTreeIterator in JGit had been adapted, DiffFormatter was forgotten. To make it work correctly (again) also for such cases, make it set up a WorkingTreeeIterator automatically, and make sure the WorkingTreeSource can find such files, too. Also pass the repository to the TreeWalks used inside the DiffFormatter to pick up the correct attributes, filters, and line-ending settings. Bug: 565081 Change-Id: Ie88ac81166dc396ba28b83313964c1712b6ca199 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Fix writing GPG signatures with trailing newlineThomas Wolf2020-07-081-37/+53
| | | | | | | Make sure we don't produce a spurious empty line at the end. Bug: 564428 Change-Id: Ib991d93fbd052baca65d32a7842f07f9ddeb8130 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Improve error message when receive.maxCommandBytes is exceededDavid Pursehouse2020-06-291-1/+3
| | | | | | | | | | | | | | | | | The message "Too many commands" implies there is a hard limit on the number of commands, which isn't the case. The limit is on the total size of the received data, as explained in change I84317d396 which introduced the configuration setting receive.maxCommandBytes: shorter reference names allow for more commands, longer reference names permit fewer commands per batch. Change the message to: Commands size exceeds limit defined in receive.maxCommandBytes Change-Id: I678b78f919b2fec8f8058f3403f2541c26a5d00e Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* DiffFormatterTest: Add a test to confirm the default rename detection settingsDavid Pursehouse2020-06-261-0/+13
| | | | | | | | | | | | | | | Add a test that confirms: - No rename detector is initialized by default - Rename detector is initialized after calling setDetectRenames(true) - Rename limit and rename score have the default values 400 and 60, respectively. Note that there are no constants for these values so the test hard codes them. Change-Id: I327e2b348a40ef67d8a184e5ab09f4e9ab573e1c Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* MergedReftable: Include the last reftable in determining minUpdateIndexMinh Thai2020-06-221-16/+16
| | | | | | | | | | | MergedReftable ignores the last reftable in the stack while calculating the minUpdateIndex. Update the loop indices to include all reftables in the minUpdateIndex calculation, while skipping position 0 as it is read outside the loop. Change-Id: I12d3e714581e93d178be79c02408a67ab2bd838e Signed-off-by: Minh Thai <mthai@google.com>
* SimpleMergeTest: Clean up code styleDemetr Starshov2020-06-101-156/+149
| | | | | Signed-off-by: Demetr Starshov <dstarshov@google.com> Change-Id: Ib0149279324a8b085eec4c60d02c8f32a8cc86bb
* Prepare 5.9.0-SNAPSHOT buildsMatthias Sohn2020-06-092-54/+54
| | | | | Change-Id: Ia998e2772df1285a4c674b07201f15d53156eb78 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* ApplyCommand: use context lines to determine hunk locationThomas Wolf2020-06-0413-1/+535
| | | | | | | | | | | | | | If a hunk does not apply at the position stated in the hunk header try to determine its position using the old lines (context and deleted lines). This is still a far cry from a full git apply: it doesn't do binary patches, it doesn't handle git's whitespace options, and it's perhaps not the fastest on big patches. C git hashes the lines and uses these hashes to speed up matching hunks (and to do its whitespace magic). Bug: 562348 Change-Id: Id0796bba059d84e648769d5896f497fde0b787dd Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Add tests for RawTextComparator.WS_IGNORE_CHANGE.hash()Thomas Wolf2020-06-021-0/+44
| | | | Change-Id: I1ed4df789094e09c39b3c2054fe5b9bd0c1a8f9b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Decouple JSch from JGit CoreMatthias Sohn2020-06-0149-2484/+4
| | | | | | | | | | | | | | | | | | | | | | | | Motivation: JSch serves as 'default' implementations of the SSH transport. If a client application does not use it then there is no need to pull in this dependency. Move the classes depending on JSch to an OSGi fragment extending the org.eclipse.jgit bundle and keep them in the same package as before since moving them to another package would break API. Defer moving them to a separate package to the next major release. Add a new feature org.eclipse.jgit.ssh.jsch feature to enable installation. With that users can now decide which of the ssh client integrations (JCraft JSch or Apache Mina SSHD) they want to install. We will remove the JCraft JSch integration in a later step due to the reasons discussed in bug 520927. Bug: 553625 Change-Id: I5979c8a9dbbe878a2e8ac0fbfde7230059d74dc2 Also-by: Michael Dardis <git@md-5.net> Signed-off-by: Michael Dardis <git@md-5.net> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> Signed-off-by: David Ostrovsky <david@ostrovsky.org>
* Decouple BouncyCastle from JGit CoreMatthias Sohn2020-06-012-134/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Motivation: BouncyCastle serves as 'default' implementation of the GPG Signer. If a client application does not use it there is no need to pull in this dependency, especially since BouncyCastle is a large library. Move the classes depending on BouncyCastle to an OSGi fragment extending the org.eclipse.jgit bundle. They are moved to a distinct internal package in order to avoid split packages. This doesn't break public API since these classes were already in an internal package before this change. Add a new feature org.eclipse.jgit.gpg.bc to enable installation. With that users can now decide if they want to install it. Attempts to sign a commit if org.eclipse.jgit.gpg.bc isn't available will result in ServiceUnavailableException being thrown. Bug: 559106 Change-Id: I42fd6c00002e17aa9a7be96ae434b538ea86ccf8 Also-by: Michael Dardis <git@md-5.net> Signed-off-by: Michael Dardis <git@md-5.net> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> Signed-off-by: David Ostrovsky <david@ostrovsky.org>
* RawTextComparator.WS_IGNORE_CHANGE must not compare whitespaceThomas Wolf2020-05-281-0/+28
| | | | | | | | | | | | Only the presence or absence of whitespace is significant; but not the actual whitespace characters. Don't compare whitespace bytes. Compare the C git implementation at [1]. [1] https://github.com/git/git/blob/0d0e1e8/xdiff/xutils.c#L173 Bug: 563570 Change-Id: I2d0522b637ba6b5c8b911b3376a9df5daa9d4c27 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Ignore core.eol if core.autocrlf=inputThomas Wolf2020-05-221-0/+32
| | | | | | | | | | Config core.eol is to be ignored if core.autocrlf is true or input.[1] JGit didn't do so when core.autocrlf=input was set. [1] https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreeol Bug: 561877 Change-Id: I5e62e0510d160b5113c1090319af09c2bc1bcb59 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Attributes: fix handling of text=auto in combination with eolThomas Wolf2020-05-222-0/+107
| | | | | | | | | | | | | | | In Git 2.10.0 the interpretation of gitattributes changed or was fixed such that "* text=auto eol=crlf" would indeed still do auto-detection of text vs. binary content.[1] Previously this was identical to "* text eol=crlf", i.e., treating all files as text. JGit still did the latter, which caused surprises because it changed binary files. [1] https://github.com/git/git/blob/master/Documentation/RelNotes/2.10.0.txt#L248 Bug: 561341 Change-Id: I5b6fb97b5e86fd950a98537b6b8574f768ae30e5 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* Merge changes I39783eee,I874503ec,Ic942a8e4,I6ec2c3e8,I62cb5030, ...Terry Parker2020-05-131-1/+0
|\ | | | | | | | | | | | | | | | | | | | | | | * changes: PackBitmapIndex: Set distance threshold PackBitmapIndex: Not buffer inflated bitmap in BasePackBitmapIndex PackBitmapIndex: Remove convertedBitmaps in the Remapper PackBitmapIndex: Reduce memory usage in GC PackBitmapIndex: Add AddToBitmapWithCacheFilter class PackBitmapIndex: Add util methods and builder to BitmapCommit PackBitmapIndex: Move BitmapCommit to a top-level class Refactor: Make retriveCompressed an method of the Bitmap class
| * PackBitmapIndex: Move BitmapCommit to a top-level classYunjie Li2020-05-121-1/+0
| | | | | | | | | | | | | | | | | | Move BitmapCommit from inside the PackWriterBitmapPreparer to a new top-level class in preparation for improving the memory footprint of GC's bitmap generation phase. Change-Id: I4d404a5b3a34998b441d23105197f33d32d39670 Signed-off-by: Yunjie Li <yunjieli@google.com>