Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

JGit/New and Noteworthy/4.9

< JGit‎ | New and Noteworthy
Revision as of 18:46, 25 September 2017 by Matthias.sohn.sap.com (Talk | contribs) (Contributors)

DRAFT, this release is planned for end of September 2017'


JGit

Features

  • Fetch submodule repo before resolving commits (Bug: 470318)
  • Handle SSL handshake failures in TransportHttp, use CredentialsProvider to inform the user (Bug: 374703)
  • Support http.<url>.* configs
  • Add BlobObjectChecker
  • Improve getting typed values from a Config to enable handling invalid configuration options (Bug: 520978)
  • Support most %-token substitutions in OpenSshConfig (Bug: 496170)
  • Let Jsch know about ~/.ssh/config (Bug: 490939)
   Ensure the Jsch instance used knows about ~/.ssh/config. This
   enables Jsch to honor more user configurations (see
   com.jcraft.jsch.Session.applyConfig()), in particular also the
   UserKnownHostsFile configuration, or additional identities given
   via multiple IdentityFile entries.
  • Add support to follow HTTP redirects (Bug: 465167)
 Implement config setting http.followRedirects
 Number of redirects followed can be limited by http.maxRedirects (default 5)
  • Send a detailed event on working tree modifications
 to provide the foundations for better file change tracking (Bug: 500106)
  • Add dfs fsck implementation
  • Implement atomic BatchRefUpdates for RefDirectory
   The existing packed-refs file provides a mechanism for implementing
   atomic multi-ref updates without any changes to the on-disk format or
   lockfile protocol. We just need to make sure that there are no loose
   refs involved in the transaction, which we can achieve by packing the
   refs while holding locks on all loose refs. Full details of the
   algorithm are in the PackedBatchRefUpdate javadoc.
  • reftable: new ref storage format
   Some repositories contain a lot of references (e.g. android at 866k,
   rails at 31k). The reftable format provides:
   - Near constant time lookup for any single reference, even when the
     repository is cold and not in process or kernel cache.
   - Near constant time verification a SHA-1 is referred to by at least
     one reference (for allow-tip-sha1-in-want).
   - Efficient lookup of an entire namespace, such as `refs/tags/`.
   - Support atomic push `O(size_of_update)` operations.
   - Combine reflog storage with ref storage.
  • Support -merge attribute in binary macro (Bug: 517128)
   The merger is now able to react to the use of the merge attribute.
   The value unset and the custom value 'binary' are handled (-merge
   and merge=binary)
  • Support --match functionality in DescribeCommand (Bug: 518377)
  • Allow to programmatically set FastForwardMode for PullCommand (Bug: 517847)
  • Add support for config option "pull.ff" (Bug: 474174)
  • Add a new singlePack option to PackConfig
   If set, "singlePack" will create a single GC pack file for all
   objects reachable from refs/*. If not set, the GC pack will contain
   object reachable from refs/heads/* and refs/tags/*, and the GC_REST
   pack will contain all other reachable objects.
  • fetch: Accept any SHA-1 on left hand side of refspec

JGit Command Line

  • Added API to TextBuiltin for piped usage.
  • Add --match option for `jgit describe` to CLI (Bug: 518377)

Performance Improvements

  • ReceivePack: clear advertised .haves if application changes refs to avoid over-advertising ".have" lines

Build and Release Engineering

  • Upgrade Maven compiler plugins
  • Add org.apache.commons.codec 1.9.0 to target platform
  • Update args4j to 2.33 (CQ: 11068)
  • Update Oxygen Orbit p2 repository to R20170516192513
  • Replace findbugs by spotbugs

Bug Fixes

?? enhancement requests and ?? bugs were closed

  • Fix missing RefsChangedEvent when packed refs are used (Bug: 521296)
  • Fix Daemon.stop() to actually stop the listener thread (Bug: 376369)
  • Remove workaround for bug in Java's ReferenceQueue which was fixed in Java 8
  • Don't assume name = path in .gitmodules (Bug: 508801)
  • FetchCommand: pass on CredentialsProvider to submodule fetches (Bug: 515325)
  • Exclude file matching: fix backtracking on match failures after ** (Bug: 520920)
  • Fix path pattern matching to work also for gitattributes (Bug: 508568)
  • Ignore invalid TagOpt values (Bug: 429625)
  • Fix default directory used to clone when setDirectory wasn't called. (Bug: 519883)
  • Do authentication re-tries on HTTP POST (Bug: 513043)
  • Fix exception handling for opening bitmap index files
  • Do not apply pushInsteadOf to existing pushUris (Bug: 393170)
  • Record submodule paths with untracked changes as FileMode.GITLINK (Bug: 520702)
  • Ensure EOL stream type is DIRECT when -text attribute is present (Bug: 520910)
   Otherwise fancy combinations of attributes (binary or -text in
   combination with crlf or eol) may result in the corruption of binary
   data.
  • Use relative paths for attribute rule matching (Bug: 520677)
  • Treat RawText of binary data as file with one single line.
   This avoids executing mergeAlgorithm.merge on binary data, which is
   unlikely to be useful.
  • Fix committing empty commits (Bug: 510685)
  • Fix JGit set core.fileMode to false by default instead of true for non Windows OS. (Bug: 519887)
  • Fix matching ignores and attributes pattern of form a/b/**.
  • Fix deleting symrefs
  • Fix bug in multiple tag handling on DescribeCommand (Bug: 518377)
  • bug 393170 - pushInsteadOf configuration is ignored by EGit.

Note: Up to now JGit mistakenly applied pushInsteadOf also to existing pushUris. If some repositories had relied on this mis-feature, pushes may newly suddenly fail (the uncritical case; the config just needs to be fixed) or even still succeed but push to unexpected places, namely to the non-rewritten pushUrls (the critical case).

Minimum Java version 8-b100: JGit 4.9 removes a workaround [1] for a bug [2] in ReferenceQueue of Sun's Java 5, 6, 7 implementation where a Reference can be enqueued and dequeued twice on the same reference queue due to a race condition within ReferenceQueue.enqueue(Reference). This bug was fixed in JDK 8-b100 [3] hence this is the minimum supported Java version for JGit 4.9.

[1] https://git.eclipse.org/r/#/c/104245/ [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6837858 [3] http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/858c75eb83b5

Contributors

The following 21 developers worked on this release of JGit :

Changcheng Xiao, Christian Halstrick, Dave Borowitz, David Pursehouse, David Turner, Dmitry Pavlenko, Han-Wen Nienhuys, Joan Goyeau, Jonathan Nieder, Masaya Suzuki, Mathieu Cartaud, Matthias Sohn, Mattias Neuling, Michael FIG, Ned Twigg, Oliver Lockwood, Robin Stocker, Shawn Pearce, Terry Parker, Thomas Wolf, Zhen Chen

Back to the top