Skip to main content
Jump to: navigation, search

Difference between revisions of "JGit/New and Noteworthy/3.0"

(API Changes)
(Features, performance)
Line 1: Line 1:
 
=Features=
 
=Features=
  
* TagCommand now also supports creating simple unannotated (lightweight) tags ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=349223 bug 349223])
+
==Recursive Merge==
 +
 
 +
JGit now supports the "recursive" merge strategy and it's the default for merge/pull ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=380314 bug 380314]). It is based on the "resolve" strategy but can handle more than one merge base. See [http://git-scm.com/docs/git-merge#_merge_strategies merge strategies] in the Git documentation for a description.
 +
 
 +
==Java 7==
 +
 
 +
'''TODO''':
 +
 
 +
Added <tt>org.eclipse.jgit.java7</tt> artifact (and p2 feature) for taking advantage of Java 7 for things like symlink support.
 +
 
 +
=Commands=
 +
 
 +
* Add <tt>NameRevCommand</tt> for describing IDs in terms of refnames ([https://git.eclipse.org/r/r/I92bfb47dd16c898313d2ee525395609c3bf72ebe change I92bfb47]).
 +
* Add <tt>ArchiveCommand</tt> for creating an archive file for a tree
 +
* <tt>TagCommand</tt> now also supports creating simple unannotated (lightweight) tags ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=349223 bug 349223]).
 +
* <tt>RebaseCommand</tt> supports aborting a non-interactive rebase started from C Git ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=336820 bug 336820]).
 +
* <tt>MergeCommand</tt> now has a <tt>setCommit(boolean)</tt> method which can be used to merge but not yet commit the result ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=335091 bug 335091]).
 +
* <tt>StashCreateCommand</tt> considers working tree changes when stashing newly added files ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=402396 bug 402396]).
 +
* <tt>StashCreateCommand</tt> no longer stashes untracked files ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=403282 bug 403282]).
 +
 
 +
=Library=
 +
 
 +
* Add <tt>isRebasing</tt> to <tt>RepositoryState</tt> for checking whether the repository is in a rebasing state.
 +
* Don't verify host name when <tt>http.sslVerify</tt> is set to <tt>false</tt> ([https://git.eclipse.org/r/r/I42f509fea8e4ac89fad646aec3dfbf1753ae7e3d change I42f509f]).
 +
* Allow to provide OutputStream for push so that server messages can be written to it while they're coming in ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=398404 bug 398404]).
 +
* <tt>IndexDiff</tt> provides stage information for conflicting entries, e.g. <tt>BOTH_MODIFIED</tt> ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=403697 bug 403697]).
 +
* Behave more like C Git when fetching tags by not updating existing tags unless explicitly specified ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=388095 bug 388095]).
 +
 
 +
=Command Line=
 +
 
 +
* Clone command
 +
** Added <tt>--branch</tt> (<tt>-b</tt>) option for checking out a specific branch instead of HEAD in non-bare repository
 +
* Merge command
 +
** Add <tt>--no-commit</tt> option for merging but not committing the result
 +
* Status command
 +
** Show conflict description for unmerged paths (e.g. "both modified")
 +
 
 +
=Performance Improvements=
 +
 
 +
* DateRevQueue (used by RevWalk) is faster for many commits ([https://git.eclipse.org/r/r/Ie7b99f40eacf6324bfb4716d82073adeda64d10f change Ie7b99f4]).
 +
* When using both Git and JGit and <tt>core.checkstat</tt> is set to <tt>minimal</tt>, Git no longer has to revalidate a large number of files ([https://git.eclipse.org/r/r/I8eaff1858a891571075a86db043f9d80da3d7503 change I8eaff18]).
 +
* Updating many existing refs is faster as the unnecessary check for ref name conflicts is no longer done ([https://git.eclipse.org/r/r/I9057bc4ee22f9cc269b1cc00c493841c71527cd6 change I9057bc4]).
 +
* Speed up clone/fetch with large number of refs ([https://git.eclipse.org/r/r/I17d0b3ccc27f868c8497607d8e57bf7082e65ba3 change I17d0b3c]).
 +
* Various improvements to packing/delta compression
 +
 
 +
'''TODO''': bitmap index stuff, more?
  
 
=API Changes and Migration Hints=
 
=API Changes and Migration Hints=
Line 37: Line 82:
 
</pre>
 
</pre>
  
=Performance Improvements=
+
'''TODO''': Reflog?
* TODO
+
  
 
= Bug Fixes =
 
= Bug Fixes =

Revision as of 10:53, 10 May 2013

Features

Recursive Merge

JGit now supports the "recursive" merge strategy and it's the default for merge/pull (bug 380314). It is based on the "resolve" strategy but can handle more than one merge base. See merge strategies in the Git documentation for a description.

Java 7

TODO:

Added org.eclipse.jgit.java7 artifact (and p2 feature) for taking advantage of Java 7 for things like symlink support.

Commands

  • Add NameRevCommand for describing IDs in terms of refnames (change I92bfb47).
  • Add ArchiveCommand for creating an archive file for a tree
  • TagCommand now also supports creating simple unannotated (lightweight) tags (bug 349223).
  • RebaseCommand supports aborting a non-interactive rebase started from C Git (bug 336820).
  • MergeCommand now has a setCommit(boolean) method which can be used to merge but not yet commit the result (bug 335091).
  • StashCreateCommand considers working tree changes when stashing newly added files (bug 402396).
  • StashCreateCommand no longer stashes untracked files (bug 403282).

Library

  • Add isRebasing to RepositoryState for checking whether the repository is in a rebasing state.
  • Don't verify host name when http.sslVerify is set to false (change I42f509f).
  • Allow to provide OutputStream for push so that server messages can be written to it while they're coming in (bug 398404).
  • IndexDiff provides stage information for conflicting entries, e.g. BOTH_MODIFIED (bug 403697).
  • Behave more like C Git when fetching tags by not updating existing tags unless explicitly specified (bug 388095).

Command Line

  • Clone command
    • Added --branch (-b) option for checking out a specific branch instead of HEAD in non-bare repository
  • Merge command
    • Add --no-commit option for merging but not committing the result
  • Status command
    • Show conflict description for unmerged paths (e.g. "both modified")

Performance Improvements

  • DateRevQueue (used by RevWalk) is faster for many commits (change Ie7b99f4).
  • When using both Git and JGit and core.checkstat is set to minimal, Git no longer has to revalidate a large number of files (change I8eaff18).
  • Updating many existing refs is faster as the unnecessary check for ref name conflicts is no longer done (change I9057bc4).
  • Speed up clone/fetch with large number of refs (change I17d0b3c).
  • Various improvements to packing/delta compression

TODO: bitmap index stuff, more?

API Changes and Migration Hints

Details of API changes in 3.0 compared to the previous release 2.3.1 are available in the Clirr API change report

(TODO: adapt link when release is available)

Internal storage API moved to internal packages

Applications are not supposed to build against the internal storage API unless they can accept API churn and make necessary updates as versions change.

  • package org.eclipse.jgit.storage.dfs was moved to org.eclipse.jgit.internal.storage.dfs
  • package org.eclipse.jgit.storage.file was moved to org.eclipse.jgit.internal.storage.file

In order to construct specific Repository instances use the respective builder classes:

  • org.eclipse.jgit.storage.file.FileRepositoryBuilder
  • org.eclipse.jgit.internal.storage.dfs.DfsRepositoryBuilder

WindowCache reconfiguration

Instead of

WindowCacheConfig c = new WindowCacheConfig();
... set new configuration params ...
WindowCache.reconfigure(c);

use

WindowCacheConfig c = new WindowCacheConfig();
... set new configuration params ...
WIndowCacheConfig.install()

FollowFilter requires DiffConfig

Creation of a FollowFilter now needs an explicit DiffConfig, this was necessary to fix an NPE (see https://git.eclipse.org/r/#/c/12499)

public static FollowFilter create(String path, DiffConfig cfg)

TODO: Reflog?

Bug Fixes

14 Bugs and 0 enhancement requests were closed

Contributors

The following X developers worked on this release of JGit:

TODO

Back to the top