jgit/org.eclipse.jgit.test
Konrad Kügler e0fbae5dc3 Rebase: Add --preserve-merges support
With --preserve-merges C Git re-does merges using the rewritten merge
parents, discarding the old merge commit. For the common use-case of
pull with rebase this is unfortunate, as it loses the merge conflict
resolution (and other fixes in the merge), which may have taken quite
some time to get right in the first place.

To overcome this we use a two-fold approach:
If any of the (non-first) merge parents of a merge were rewritten, we
also redo the merge, to include the (potential) new changes in those
commits.
If only the first parent was rewritten, i.e. we are merging a branch
that is otherwise unaffected by the rebase, we instead cherry-pick the
merge commit at hand. This is done with the --mainline 1 and --no-commit
options to apply the changes introduced by the merge. Then we set up an
appropriate MERGE_HEAD and commit the result, thus effectively forging a
merge.

Apart from the approach taken to rebase merge commits, this
implementation closely follows C Git. As a result, both Git
implementations can continue rebases of each other.

Preserving merges works for both interactive and non-interactive rebase,
but as in C Git it is easy do get undesired outcomes with interactive
rebase.

CommitCommand supports committing merges during rebase now.

Bug: 439421
Change-Id: I4cf69b9d4ec6109d130ab8e3f42fcbdac25a13b2
Signed-off-by: Konrad Kügler <swamblumat-eclipsebugs@yahoo.de>
2014-07-15 19:00:58 -04:00
..
.settings Don't warn for methods that can be static 2014-07-02 00:36:38 +02:00
META-INF Prepare 3.4.2-SNAPSHOT builds 2014-06-21 00:57:43 +02:00
exttst/org/eclipse/jgit/patch Kill GitIndex 2011-11-09 09:16:50 +01:00
tst/org/eclipse/jgit Rebase: Add --preserve-merges support 2014-07-15 19:00:58 -04:00
tst-rsrc Fix patch application WRT windows line endings. 2013-01-19 13:29:02 +01:00
.classpath Partial revert "Switch build to Apache Felix maven-bundle-plugin" 2010-01-10 15:59:03 +01:00
.gitignore Extend the FS class for Java7 2013-05-04 02:01:56 +02:00
.project Extend the FS class for Java7 2013-05-04 02:01:56 +02:00
build.properties Partial revert "Switch build to Apache Felix maven-bundle-plugin" 2010-01-10 15:59:03 +01:00
org.eclipse.jgit.core--All-External-Tests (Java 6).launch Use JUnit4 for tests 2010-08-26 12:26:38 -05:00
org.eclipse.jgit.core--All-External-Tests.launch Use JUnit4 for tests 2010-08-26 12:26:38 -05:00
org.eclipse.jgit.core--All-Tests (Java 6).launch Increase heap size for jgit tests 2010-08-27 00:29:31 +02:00
org.eclipse.jgit.core--All-Tests (Java 7).launch Extend the FS class for Java7 2013-05-04 02:01:56 +02:00
org.eclipse.jgit.core--All-Tests (Java 8).launch Add launchers for running tests with Java 8 2014-03-29 20:07:10 +01:00
org.eclipse.jgit.core--All-Tests.launch Use JUnit4 for tests 2010-08-26 12:26:38 -05:00
plugin.properties Fix plugin provider names to conform with release train requirement 2013-04-08 23:05:36 +02:00
pom.xml Prepare 3.4.2-SNAPSHOT builds 2014-06-21 00:57:43 +02:00