aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge "Revert "Adds FilteredRevCommit that can overwrites its parents in the ↵Terry Parker2022-08-037-398/+21
|\ \ | | | | | | | | | DAG.""
| * | Revert "Adds FilteredRevCommit that can overwrites its parents in the DAG."Ronald Bhuleskar2022-08-037-398/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ceb51a5e0e9db166e572ea7cd362795b4662b0cd. Reason for revert: The change in https://git.eclipse.org/r/c/jgit/jgit/+/194354 broke the egit test [1]. Calling c.getShortMessage() causes an NPE. [1] https://ci.eclipse.org/egit/job/egit.gerrit/2711/ Change-Id: I411565b6eaa0bbb562cc1c8a355942ff09fd29bc
* | | CleanCommand: fix prefix matchingThomas Wolf2022-08-035-18/+96
| |/ |/| | | | | | | | | | | | | | | | | String.startsWith() is not a valid test for file path prefixes: directory "a" is _not_ a prefix of a file "ab", only of "a/b". Add a proper Paths.isEqualOrPrefix() method and use it in CleanCommand. Bug: 580478 Change-Id: I6863e6ba94a8ffba6561835cc57044a0945d2770 Signed-off-by: Thomas Wolf <twolf@apache.org>
* | Option to pass start RevCommit to be blamed on to the BlameGenerator.Ronald Bhuleskar2022-08-022-39/+337
|/ | | | | | | | | This can allow passing a FilteredRevCommit which is the filtered list of commit graph making it easier for Blame to work on. This can significantly improve blame performance since blame can skip expensive RevWalk. Change-Id: I5dab25301d6aef7df6a0bc25a4c553c730199272
* Adds FilteredRevCommit that can overwrites its parents in the DAG.Ronald Bhuleskar2022-08-027-21/+398
| | | | Change-Id: I2df9843dde0f589f5fea6cedaaff52e313eea6de
* Add the ability to override parents on RevCommit.Ronald Bhuleskar2022-08-0214-129/+333
| | | | | | | | | | | | | | | | | | | This makes RevCommit extensible to allow having different structure of child-parent relationship. This change is a pre-requsite for having a FilteredRevCommit that overrides parents from the RevCommit. That then provides a cheaper way to walk over a subset of RevCommits instead of an expensive way that applies filters while walking over selected commits. Useful with Blame which works on a single file and that can be made performant, if we know all the commits needed by the Blame algorithm. So Blame algorithm can avoid walking over finding what commits to blame on. This change makes parents field on RevCommit private and exposes it thrrough overrideable methods such as getParents, getParent at index, getParentCount and setParents. All other files other than RevCommit are updating the usages of accessing RevCommits parents. Change-Id: I2d13b001c599cc4ebc92d1ab6e07b07acb3b7fe5
* Refactor NameConflictTreeWalk.fastMin methodDmitrii Filippov2022-08-011-8/+16
| | | | Change-Id: Iac2e6f615463e18ddf788e6ddfe15ef023cac977
* Fix BUILD rules for FilteredRenameDetectorTestDmitrii Filippov2022-08-011-0/+1
| | | | | | | | | The FilteredRenameDetectorTest was added in [1], but bazel build rules were not updated. [1] https://git.eclipse.org/r/c/jgit/jgit/+/194200 Change-Id: I7fc713e19b4768176eb84e9768137431b33a805e
* Rename fastMinHasMatch to allTreesNamesMatchFastMinRefDmitrii Filippov2022-08-011-8/+8
| | | | Change-Id: I2d9165616650e9d44745c6848d2cf1045f53f33c
* Merge "Document TreeWalk#min()"Han-Wen NIenhuys2022-08-011-0/+8
|\
| * Document TreeWalk#min()Han-Wen Nienhuys2022-08-011-0/+8
| | | | | | | | | | Change-Id: I29a6c023929d8270a8cdd1e7f012817a06428f42 Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
* | Merge "NameConflictTreeWalk: respect git order on multi-tree iteration"Han-Wen NIenhuys2022-08-012-2/+90
|\ \ | |/ |/|
| * NameConflictTreeWalk: respect git order on multi-tree iterationDmitrii Filippov2022-07-292-2/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The NameConflictTreeWalk class is used in 3-way merge for iterating over entries in 3 different commits. The class provides information about a current entry and a state of the entry in commits (e.g entry is file, entry is directory, entry is missing). In rare cases, the tree walker can mix information about entries with different name. The problem appears, because git uses unusual sorting order for files. Example (this is a simplified real-life example): Commit 1: * gradle.properties - file * gradle - directory (with nested files) * gradle/file - file in gradle directory Commit 2: * gradle.properties - file * no entry with the name gradle Commit 3: * gradle.properties - file * gradle - file Here the names are ordered like this: "gradle" file <"gradle.properties" file < "gradle/file" file. NameConflictTreeWalk iterator already have code for processing git sorting order, however in the example above the code doesn't work correctly. Before the fix, NameConflictTreeWalk returns: #next() "gradle - directory" | "gradle.properties" | "gradle - file" - which is wrong. The expected result is #next() "gradle - directory | MISSED_FILE | "gradle - file" #next() "gradle.properties"|"gradle.properties"|"gradle.properties" Ensure that the "matches" field of tree iterators (which contains the current path) is kept in sync in the case above. Change-Id: Ief5aa06d80b358f4080043c8694aa0fd7c60045b Signed-off-by: Dmitrii Filippov <dmfilippov@google.com>
* | Squash error-prone messagesHan-Wen Nienhuys2022-08-011-0/+6
| | | | | | | | | | Change-Id: Ibbccc4d1faf1f0a1f0f4136c5bf075f155d80157 Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
* | Use constants for git packet protocol line identifiersThomas Wolf2022-07-316-79/+234
| | | | | | | | | | | | | | | | | | | | Introduce named constants for packet line headers and use them instead of direct string literals everywhere. This not only makes the code more readable because we don't need NON-NLS markers, it also makes it more robust since we can use the length of these constants instead of magic numbers. Change-Id: Ie4b7239e0b479a68a2dc23e6e05f25061d481a31 Signed-off-by: Thomas Wolf <twolf@apache.org>
* | ObjectDirectory: improve reading of shallow fileRobin Müller2022-07-313-16/+32
| | | | | | | | | | | | Use FileUtils.readWithRetries(). Change-Id: I5929184caca6b83a1ee87b462e541620bd68aa90
* | Fetch: add support for shallowRobin Müller2022-07-3125-90/+1066
| | | | | | | | | | | | | | | | | | | | This adds support for shallow cloning. The CloneCommand and the FetchCommand now have the new methods setDepth, setShallowSince and addShallowExclude to tell the server that the client doesn't want to download the complete history. Bug: 475615 Change-Id: Ic80fb6efb5474543ae59be590ebe385bec21cc0d
* | [tests] Stabilize the HTTP server's request logThomas Wolf2022-07-312-12/+18
|/ | | | | | | | | | | | | | | | | | | | | | | The TestRequestLog added log entries only after a request had been handled. But the response is already sent at that point, so the following sequence was possible: client sends request A server thread T1 handles request A and sends back response client receives response client sends request B server thread T2 handles request B (and sends back response) server thread T2 logs B server thread T1 logs A Fix this by logging events before handling a request, and then filling in the response data after the request has been handled. This should avoid such inversions, at least for tests using a single single-threaded client. With multiple concurrent or multi-threaded clients, all bets about the log order would be off anyway. Bug: 528187 Change-Id: I99a46df17231fa7c4f75a8c37e2c14dc098c4e22 Signed-off-by: Thomas Wolf <twolf@apache.org>
* Update Orbit to S20220726152247 and bouncycastle to 1.71Matthias Sohn2022-07-2723-124/+193
| | | | Change-Id: I036b9029d575e66ab67839468e5d2a8a7dd85c83
* Merge "Create util class for work tree updating in both filesystem and index."Han-Wen NIenhuys2022-07-254-426/+855
|\
| * Create util class for work tree updating in both filesystem and index.Nitzan Gur-Furman2022-07-254-426/+855
| | | | | | | | | | | | | | | | | | | | This class intends to make future support in index updating easier. This class currently extracts some logic from ResolveMerger. Logic related to StreamSupplier was copied from ApplyCommand, which will be integrated in a following change. Change-Id: I8dc5a582433fc9891038c628385d3970b5a8984b
* | Fix the handling of .git/info/exclude and core.excludesFileThomas Wolf2022-07-152-15/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The RootIgnoreNode in a WorkingTreeIterator must _not_ add the rules from .git/info/exclude or from the file designated by git config core.excludesFile to the list of rules read from the root .gitignore. These really must be separate nodes in a hierarchy, otherwise the precedence rules from [1] are violated and the outcome is not the same as in C git. [1] https://git-scm.com/docs/gitignore Bug: 580381 Change-Id: I57802ba7bbbe4f183504c882b6c77a78cc3a9b99 Signed-off-by: Thomas Wolf <twolf@apache.org>
* | Remove version constraints from org.tukaani.xz packageAndrey Loskutov2022-07-131-1/+1
| | | | | | | | | | | | | | Fixes compilation errors in org.eclipse.jgit.test with 4.25 platform Bug: 580370 Change-Id: I9b7cb21bcbb87d14176fc0675bf03d20f81fa009
* | Merge branch 'stable-6.2'Matthias Sohn2022-07-066-11/+102
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.2: UploadPack: don't prematurely terminate timer in case of error Do not create reflog for remote tracking branches during clone UploadPack: do not check reachability of visible SHA1s Add missing package import javax.management to org.eclipse.jgit Change-Id: Ia2280b848cea7bdfa5bc48356484e040d159845d
| * \ Merge branch 'stable-6.1' into stable-6.2Matthias Sohn2022-07-066-11/+102
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.1: UploadPack: don't prematurely terminate timer in case of error Do not create reflog for remote tracking branches during clone UploadPack: do not check reachability of visible SHA1s Add missing package import javax.management to org.eclipse.jgit Change-Id: Ib3ff6a038e1b92a931a7f2624c19bbefd8cb95fd
| | * \ Merge branch 'stable-6.0' into stable-6.1Matthias Sohn2022-07-066-11/+102
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.0: UploadPack: don't prematurely terminate timer in case of error Do not create reflog for remote tracking branches during clone UploadPack: do not check reachability of visible SHA1s Add missing package import javax.management to org.eclipse.jgit Change-Id: I08734ee2c8f3296d908da6a29d53ed87c4b48eb2
| | | * \ Merge branch 'stable-5.13' into stable-6.0Matthias Sohn2022-07-066-11/+102
| | | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.13: UploadPack: don't prematurely terminate timer in case of error Do not create reflog for remote tracking branches during clone UploadPack: do not check reachability of visible SHA1s Add missing package import javax.management to org.eclipse.jgit Change-Id: I6db0a4d74399fde892eeec62efd2946f97547a5d
| | | | * | UploadPack: don't prematurely terminate timer in case of errorMatthias Sohn2022-06-302-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In uploadWithExceptionPropagation don't prematurely terminate timer in case of error to enable reporting it to the client. Expose a close method so that callers can terminate it at the appropriate time. If the timer is already terminated when trying to report it to the client this failed with the error java.lang.IllegalStateException: "Timer already terminated". Bug: 579670 Change-Id: I95827442ccb0f9b1ede83630cf7c51cf619c399a
| | | | * | Merge "Do not create reflog for remote tracking branches during clone" into ↵Matthias Sohn2022-06-263-2/+71
| | | | |\ \ | | | | | | | | | | | | | | | | | | | | | stable-5.13
| | | | | * | Do not create reflog for remote tracking branches during cloneLuca Milanesio2022-06-253-2/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using JGit on a non-bare repository, the CloneCommand it previously created local reflogs for all branches including remote tracking ones, causing the generation of a potentially large number of files on the local filesystem. The creation of the remote-tracking branches (refs/remotes/*) during clone is not an issue for the local filesystem because all of them are stored in a single packed-refs file. However, the creation of a large number of ref logs on a local filesystem IS an issue because it may not be tuned or initialised in term of inodes to contain a very large number of files. When a user (or a CI system) performs the CloneCommand against a potentially large repository (e.g., millions of branches), it is interested in working or validating a single branch or tag and is unlikely to work with all the remote-tracking branches. The eager creation of a reflogs for all the remote-tracking branches is not just a performance issue but may also compromise the ability to use JGit for cloning a large repository. The behaviour implemented in this change is also consistent with the optimisation done in the C code-base [1]. We differentiate between clone and fetch commands using --branch <initialBranch> option, that is only available in clone command, and is set as HEAD per default. [1] https://github.com/git/git/commit/58f233ce1ed67bbc31a429fde5c65d5050fdbd7d Bug: 579805 Change-Id: I58d0d36a8a4ce42e0f59b8bf063747c4b81bd859 Signed-off-by: Luca Milanesio <luca.milanesio@gmail.com>
| | | | * | | UploadPack: do not check reachability of visible SHA1sLuca Milanesio2022-06-251-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When JGit needs to serve a Git client requesting SHA1s during the want phase, it needs to make a full reachability check from the advertised refs to the ones requested to keep all objects in the correct scope of confidentiality allowed by the avertised refs. The check is also performed when the SHA1 corresponds to one of the tips of the advertised refs which is a waste of resources. Example: fetch> ref-prefix refs/heads/foo fetch< 900505eb8ce8ced2a1757906da1b25c357b9654e refs/heads/foo fetch< 0000 fetch> command=fetch fetch> 0001 fetch> thin-pack fetch> ofs-delta fetch> want 900505eb8ce8ced2a1757906da1b25c357b9654e The SHA1 in the want is the tip of refs/heads/foo and therefore the full reachability check can be shortened and resolved more quickly. Change-Id: I49bd9e2464e0bd3bca2abf14c6e9df550d07383b Signed-off-by: Luca Milanesio <luca.milanesio@gmail.com>
| | | | * | | Add missing package import javax.management to org.eclipse.jgitMatthias Sohn2022-06-171-0/+1
| | | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Class org.eclipse.jgit.util.Monitoring uses JMX hence we need this import otherwise OSGi applications can face ClassNotFoundException. Bug: 577018 Change-Id: Ifd75337b87c7faec95d333b771bb0a2f3e46a418
* | | | | / Add aarch64 environment to target platform configurationMatthias Sohn2022-07-021-0/+5
| |_|_|_|/ |/| | | | | | | | | | | | | | Change-Id: Ib2b25f2f0abb9aac6327c030fc530c0c361cc0f9
* | | | | JGit blame very slow for large merge commits that rename filesSimeon Andreev2022-07-017-73/+400
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adjusted BlameGenerator to filter rename detection with the blame path. This reduces the running time of the blame computation significantly, for repositories with massive commits involving renames. The filtered rename detection is made (internally) available with: org.eclipse.jgit.internal.diff.FilteredRenameDetector Bug: 578900 Change-Id: I6580004e81102d685081b8180da1587a35073d36 Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
* | | | | Fix warnings about non-externalized string literalsThomas Wolf2022-06-231-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Four occurrences in RefSpec marked with //$NON-NLS-<n>$. Change-Id: Ie603a58c41357562f0739445e3fe77ca87a3eb54 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | | [sshd] Correct signature for RSA keys from an SSH agentThomas Wolf2022-06-231-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure that there is always a list of signature factories in public key authentication. For keys loaded directly, Apache MINA sshd will use the (always set) list from the SSH session by default, but for keys from an SSH agent it won't and instead consider the list set locally on the UserAuthPublicKey instance. Only that one is null by default, and then Apache MINA sshd just uses the key type as signature type. Which for RSA keys from an agent is the "ssh-rsa" signature, i.e., the deprecated SHA1 signature. Fix this by explicitly propagating the list from the session to the UserAuthPublicKey instance if not set already. Upstream issue is SSHD-1272.[1] [1] https://issues.apache.org/jira/browse/SSHD-1272 Bug: 580073 Change-Id: Id7a783f19d06c9e7c8494b1fbf7465d392ffc366 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | | Run tests that checks araxis output only on LinuxSimeon Andreev2022-06-174-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | Bug: 580189 Change-Id: Ieb14f5cf061fcb468b602c7f27e27b672e3b09e2 Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
* | | | | Add 4.25 target platform for Eclipse 2022-09Matthias Sohn2022-06-172-0/+105
| | | | | | | | | | | | | | | | | | | | Change-Id: Icc6d1bf340baabbc271f6572b1d45420ae61f314
* | | | | Suppress API errors raised for new API introduced in 5.13.1Matthias Sohn2022-06-171-14/+24
| | | | | | | | | | | | | | | | | | | | Change-Id: I55ec887c3192468d7773e8cf0236c7ed48af3ade
* | | | | Eclipse 4.24 was released, adapt p2 URL accordinglyMatthias Sohn2022-06-172-3/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: I807f15507f7ba1d03f0633b121419170f5423c02
* | | | | Fix DefaultCharset bug pattern flagged by error proneDavid Ostrovsky2022-06-175-24/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See more details in: [1]. [1] https://errorprone.info/bugpattern/DefaultCharset Change-Id: I3de0be57a2d74490a5b4e66801e9767b38f13bf9
* | | | | Use SystemReader#getDefaultCharset to read console inputDavid Ostrovsky2022-06-171-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In I986f97a410 SystemReader.getDefaultCharset() that provides the locale-dependent charset the way JEP 400 recommends. Change-Id: I30560ac47e450070e3864325d153d45f1a66882c
* | | | | Merge "Merge branch 'stable-6.2'"Matthias Sohn2022-06-176-13/+438
|\ \ \ \ \
| * | | | | Merge branch 'stable-6.2'Matthias Sohn2022-06-156-13/+438
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.2: Prepare 5.13.2-SNAPSHOT builds JGit v5.13.1.202206130422-r AmazonS3: Add support for AWS API signature version 4 Change-Id: I13514595f3a710b0d6e3c2de62f6508b950d22f9
| | * | | | Merge branch 'stable-6.1' into stable-6.2Matthias Sohn2022-06-156-13/+438
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.1: Prepare 5.13.2-SNAPSHOT builds JGit v5.13.1.202206130422-r AmazonS3: Add support for AWS API signature version 4 Change-Id: Id4965aacd4e2ea1e8575a2c1bd4845729db6049a
| | | * | | Merge branch 'stable-6.0' into stable-6.1Matthias Sohn2022-06-156-13/+438
| | | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.0: Prepare 5.13.2-SNAPSHOT builds JGit v5.13.1.202206130422-r AmazonS3: Add support for AWS API signature version 4 Change-Id: Ie9c38ab8033fe1283e8b444b6acd3f4298062bf3
| | | | * | Merge branch 'stable-5.13' into stable-6.0Matthias Sohn2022-06-156-13/+438
| | | | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.13: Prepare 5.13.2-SNAPSHOT builds JGit v5.13.1.202206130422-r AmazonS3: Add support for AWS API signature version 4 Change-Id: Ibd663a1d874d1aac274abc3dd44354fd99f64c39
| | | | | * Prepare 5.13.2-SNAPSHOT buildsMatthias Sohn2022-06-1488-503/+503
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I4862e5d80a7d95a1a119d06306e3f6927445d1d3
| | | | | * JGit v5.13.1.202206130422-rv5.13.1.202206130422-rMatthias Sohn2022-06-1388-121/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Matthias Sohn <matthias.sohn@sap.com> Change-Id: Ife74d64e8171c68dbf08271492c0ac852a6dc51c
| | | | | * AmazonS3: Add support for AWS API signature version 4eric.steele2022-06-136-14/+439
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updating the AmazonS3 class to support AWS Signature version 4 because version 2 is no longer supported in all AWS regions. The version can be selected with the new 'aws.api.signature.version' property (defaults to 2 for backwards compatibility). When set to '4', the user must also specify the AWS region via the 'region' property. The 'region' property must match the region that the 'domain' property resolves to. Bug: 579907 Change-Id: If289dbc6d0f57323cfeaac2624c4eb5028f78d13