-
Notifications
You must be signed in to change notification settings - Fork 56
New and Noteworthy 3.0
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.
(not to be confused with Command Line below)
- 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 asetCommit(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). -
CloneCommand
now also works with a short branch/tag name passed tosetBranch
(bug 390994).
- Add
isRebasing
toRepositoryState
for checking whether the repository is in a rebasing state. - Don't verify host name when
http.sslVerify
is set tofalse
(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).
- Support refspecs with wildcard in middle, e.g.
+refs/pull/*/head:refs/remotes/origin/pr/*
for fetching GitHub pull requests (bug 405099). - Basic Java 7 support (change I3d6580d). Internal only (read: symlink support not visisble)
- Fix GC which could corrupt repository on Windows if run twice on the exact same repository content (bug 389305).
- Fix internal "Delete" errors on Windows with checkout/reset, etc (bug 403685).
- Fix
Rebase/Cherry
pick failing because/when new directory already exists (bug 402834). - Fix
Amend
of merge commit to not reverse parent order (bug 392670). - Fix
TreeFilter
if one folder name is a prefix of another folder (bug 362430). - Fix 8000 byte file checking out as zero byte file if
core.autocrlf
=true
(bug 405672). - Fix NPE in
DiffFormatter
when DiffEntry.oldId is null (bug 407743). - Do not cherry-pick merge commits during rebase (change I61239d2).
- Clone command
- Added
--branch
(-b
) option for checking out a specific branch instead of HEAD in non-bare repository
- Added
- Merge command
- Add
--no-commit
option for merging but not committing the result
- Add
- Status command
- Show conflict description for unmerged paths (e.g. "both modified")
- New bitmap pack index created during JGit GC speeds up clone/fetch. With this new index type JGit can now serve Git repositories considerably faster than C Git.
- DateRevQueue (used by RevWalk) is faster for many commits (change Ie7b99f4).
- When using both C Git and JGit and
core.checkstat
is set tominimal
, 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
Details of API changes in 3.0 compared to the previous release 2.3.1 are available in the Clirr API change report linked from the JGit download page.
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
Instead of
WindowCacheConfig c = new WindowCacheConfig();
... set new configuration params ...
WindowCache.reconfigure(c);
use
WindowCacheConfig c = new WindowCacheConfig();
... set new configuration params ...
c.install();
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)
The interfaces ReflogReader and ReflogEntry exposed by ReflogCommand and Repository were moved to package org.eclipse.jgit.lib.
- Repository corruption after running gc twice (Windows only) (bug 389305)
18 Bugs and 3 enhancement requests were closed
The following 19 developers worked on this release of JGit:
Alex Blewitt, Andreas König, André Dietisheim, Arthur Baars, Christian Halstrick, Colby Ranger, Dave Borowitz, Edwin Kempin, François Rey, George C. Young, Gustaf Lundh, Jonathan Nieder, Matthias Sohn, Roberto Tyley, Robin Rosenberg, Robin Stocker, Shawn Pearce, Stefan Lay, Tomasz Zarna