summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge changes Ib6689f54,I3b5c22eeMatthias Sohn2022-08-162-31/+2
|\ | | | | | | | | | | * changes: Remove unused API problem filters Add missing @since tag for RevCommit#parents introduced in 61b4d105e4
| * Remove unused API problem filtersMatthias Sohn2022-08-121-31/+0
| | | | | | | | Change-Id: Ib6689f545585bd59b8fc06ca3a104080021424d6
| * Add missing @since tag for RevCommit#parents introduced in 61b4d105e4Matthias Sohn2022-08-121-0/+2
| | | | | | | | Change-Id: I3b5c22eea7d0af5464c7df7a7cd855ea08029853
* | DirCacheCheckout: load WorkingTreeOptions only onceThomas Wolf2022-08-145-42/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previous code loaded the WorkingTreeOptions afresh for every single file being checked out. This checked the git config (all three files, repo, user and system config) for having been modified every time. These checks can be costly, for instance on Windows, or if one of the three config files is not on a local disk, or on an otherwise slow storage. Improve this by loading the options and thus checking the git config only once before the checkout. Bug: 579715 Change-Id: I21cd5a808f9d90b5ca2d022f91f0eeb8ca26091c Signed-off-by: Thomas Wolf <twolf@apache.org>
* | WorkTreeUpdater: Fix unclosed streamsThomas Wolf2022-08-141-12/+20
| | | | | | | | | | | | | | | | | | | | | | 1. A TemporaryBuffer.LocalFile must be destroyed to ensure the temporary file gets deleted on disk. 2. TemporaryBuffer.openInputStream() may be used only after TemporaryBuffer.close(). 3. The caller of DirCacheCheckout.getContent() is responsible for closing the OutputStream! Change-Id: I46abb0fba27656a1026858e5783fc60d4738a45e Signed-off-by: Thomas Wolf <twolf@apache.org>
* | Merge "Fix API errors caused by 23a71696cd"Matthias Sohn2022-08-143-6/+41
|\|
| * Fix API errors caused by 23a71696cdMatthias Sohn2022-08-123-6/+41
| | | | | | | | | | | | | | | | | | | | | | | | - add missing @since 6.3 for new protected field workTreeUpdater and new class WorkTreeUpdater - suppress API errors caused by removing/adding protected fields and methods We follow OSGi semantic versioning which allows breaking implementers in minor versions which are e.g. subclassing a public class. Change-Id: I28f0d7b4fdd9a1f0fbc6b137d6c68dda9fe3c11e
* | Fix adding symlinks to the index when core.symlinks=falseThomas Wolf2022-08-132-0/+47
|/ | | | | | | | | | With core.symlinks=false, symlinks are checked out as plain files. When such a file is re-added to the index, and the index already contains a symlink there, add the file as a symlink. Previous code changed the index entry to a regular file. Bug: 580412 Change-Id: I5497bedc3da89c8b10120b8077c56bc5b67cb791 Signed-off-by: Thomas Wolf <twolf@apache.org>
* Merge "Provide encoding to String#getBytes()"Han-Wen NIenhuys2022-08-091-1/+2
|\
| * Provide encoding to String#getBytes()Han-Wen Nienhuys2022-08-081-1/+2
| | | | | | | | | | | | Fixes ErrorProne complaint. Change-Id: I706b225f98187bf5f86999ed5342d0072e57e314
* | Merge changes Ideaefd51,I6c347393Han-Wen NIenhuys2022-08-095-427/+889
|\ \ | | | | | | | | | | | | | | | * changes: Reapply "Create util class for work tree updating in both filesystem and index." ResolveMerger: add coverage for inCore file => directory transition
| * | Reapply "Create util class for work tree updating in both filesystem and index."Nitzan Gur-Furman2022-08-084-427/+856
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5709317f71ccaf26eceaa896150f203879b634b8. Add a bugfix for deletions in ResolveMergers instantiated with just an ObjectInserter as argument. Original change description: Create util class for work tree updating in both filesystem and index. 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. Co-authored-by: Nitzan Gur-Furman <nitzan@google.com> Co-authored-by: Han-Wen Nienhuys <hanwen@google.com> Change-Id: Ideaefd51789a382a8b499d1ca7ae0146d032f48b
| * | ResolveMerger: add coverage for inCore file => directory transitionHan-Wen Nienhuys2022-08-081-0/+33
| |/ | | | | | | Change-Id: I6c3473932eb418a036f5943c78e619184559ef3a
* / Provide default shallowCommits getter and setter in ObjectDatabaseRonald Bhuleskar2022-08-083-32/+15
|/ | | | | | | | | | | | | | I649db9ae679ec2606cf7c530b040f8b6b93eb81a added a default implementation for getShallowCommits and setShallowCommits to DfsObjDatabase, for the convenience of any implementers that define subclasses. But we forgot that some implementers inherit from ObjectDatabase directly instead. Move the default getter and setter to the base class so that such callers do not need source changes to unbreak their build. This also lets us update the api_filters to reflect that this is no longer an API-breaking change. Change-Id: I5dcca462eb306e511e57907b7d9264d51b3f3014
* Revert "Create util class for work tree updating in both filesystem and index."Jonathan Nieder2022-08-054-855/+426
| | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5151b324f4605b1091ac5843dcc1f04b3996f0d1. It is producing NullPointerExceptions during merges, causing Gerrit's acceptance tests to fail: com.google.gerrit.extensions.restapi.RestApiException: Cannot rebase ps [...] at com.google.gerrit.server.api.changes.RevisionApiImpl.rebase(RevisionApiImpl.java:280) at com.google.gerrit.acceptance.api.change.ChangeIT.rebaseChangeBase(ChangeIT.java:1584) Caused by: com.google.gerrit.server.update.UpdateException: java.lang.NullPointerException: repository is required at com.google.gerrit.server.update.BatchUpdate.executeUpdateRepo(BatchUpdate.java:588) [...] Caused by: java.lang.NullPointerException: repository is required at org.eclipse.jgit.merge.Merger.nonNullRepo(Merger.java:128) at org.eclipse.jgit.merge.ResolveMerger.addDeletion(ResolveMerger.java:380) at org.eclipse.jgit.merge.ResolveMerger.processEntry(ResolveMerger.java:553) at org.eclipse.jgit.merge.ResolveMerger.mergeTreeWalk(ResolveMerger.java:1224) at org.eclipse.jgit.merge.ResolveMerger.mergeTrees(ResolveMerger.java:1174) at org.eclipse.jgit.merge.ResolveMerger.mergeImpl(ResolveMerger.java:299) at org.eclipse.jgit.merge.Merger.merge(Merger.java:233) at org.eclipse.jgit.merge.Merger.merge(Merger.java:186) at org.eclipse.jgit.merge.ThreeWayMerger.merge(ThreeWayMerger.java:96) at com.google.gerrit.server.change.RebaseChangeOp.rebaseCommit(RebaseChangeOp.java:360) Change-Id: Idf63de81666d0df118d2d93c4f6e014e00dc05b8
* Provide a default implementation for set/get shallowCommits on DfsObjDatabaseRonald Bhuleskar2022-08-051-0/+16
| | | | | | Jgit change https://git.eclipse.org/r/c/jgit/jgit/+/193329 adds an implementation for get/set shallow commits in ObjectDatabase. This failed gerrit's acceptance tests since there is no default implementation for them in DfsObjDatabase. Change-Id: I649db9ae679ec2606cf7c530b040f8b6b93eb81a
* Merge "Revert "Option to pass start RevCommit to be blamed on to the ↵Terry Parker2022-08-032-337/+39
|\ | | | | | | BlameGenerator.""
| * Revert "Option to pass start RevCommit to be blamed on to the BlameGenerator."Ronald Bhuleskar2022-08-032-337/+39
| | | | | | | | | | | | | | | | | | | | This reverts commit 59e8bec6e7705a89b5d0b9c6ac004b323ffa16b0. 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: Iaf5feb35f4bb4c3487b04be15d1fe11376975523
* | 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