2nd attempt at the merge API. Changes from my prior posting last fall:
- Fixed the bug Robin identified (the first patch in the series)
- Rebased against current master
- Basic smoke tests provided by Robin
Shawn O. Pearce (10):
Fix TreeWalk.idEqual when both trees are missing the path
Expose the raw path for the current entry of a TreeWalk
Expose DirCacheEntry.getFileMode as a utility function
Add writeTree support to DirCache
Allow a DirCache to be created with no backing store file
Allow CanonicalTreeParsers to be created with a UTF-8 path prefix
Recursively load an entire tree into a DirCacheBuilder
Allow DirCacheEntry instances to be created with stage > 0
Define a basic merge API, and a two-way tree merge strategy
Add a few simple merge test cases
.../spearce/jgit/test/resources/create-second-pack | 13 +-
...ck-3280af9c07ee18a87705ef50b0cc4cd20266cf12.idx | Bin 0 -> 1296 bytes
...k-3280af9c07ee18a87705ef50b0cc4cd20266cf12.pack | Bin 0 -> 562 bytes
...ck-9fb5b411fe6dfa89cc2e6b89d2bd8e5de02b5745.idx | Bin 1088 -> 1100 bytes
...ck-df2982f284bbabb6bdb59ee3fcc6eb0983e20371.idx | Bin 2696 -> 2976 bytes
...k-df2982f284bbabb6bdb59ee3fcc6eb0983e20371.pack | Bin 5956 -> 5901 bytes
.../org/spearce/jgit/test/resources/packed-refs | 4 +-
.../org/spearce/jgit/lib/RepositoryTestCase.java | 3 +-
.../org/spearce/jgit/merge/SimpleMergeTest.java | 86 ++++++++
.../org/spearce/jgit/transport/TransportTest.java | 2 +-
.../src/org/spearce/jgit/dircache/DirCache.java | 37 ++++
.../org/spearce/jgit/dircache/DirCacheBuilder.java | 65 ++++++
.../org/spearce/jgit/dircache/DirCacheEntry.java | 61 +++++-
.../org/spearce/jgit/dircache/DirCacheTree.java | 115 +++++++++++
.../spearce/jgit/errors/UnmergedPathException.java | 67 ++++++
.../src/org/spearce/jgit/lib/FileMode.java | 7 +
.../src/org/spearce/jgit/lib/ObjectWriter.java | 12 +-
.../src/org/spearce/jgit/merge/MergeStrategy.java | 134 ++++++++++++
.../src/org/spearce/jgit/merge/Merger.java | 213 ++++++++++++++++++++
.../org/spearce/jgit/merge/StrategyOneSided.java | 98 +++++++++
.../jgit/merge/StrategySimpleTwoWayInCore.java | 179 ++++++++++++++++
.../jgit/treewalk/AbstractTreeIterator.java | 31 +++
.../spearce/jgit/treewalk/CanonicalTreeParser.java | 30 +++
.../src/org/spearce/jgit/treewalk/TreeWalk.java | 28 +++-
24 files changed, 1170 insertions(+), 15 deletions(-)
create mode 100644 org.spearce.jgit.test/tst-rsrc/org/spearce/jgit/test/resources/pack-3280af9c07ee18a87705ef50b0cc4cd20266cf12.idx
create mode 100644 org.spearce.jgit.test/tst-rsrc/org/spearce/jgit/test/resources/pack-3280af9c07ee18a87705ef50b0cc4cd20266cf12.pack
create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/merge/SimpleMergeTest.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/errors/UnmergedPathException.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/merge/MergeStrategy.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/merge/Merger.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/merge/StrategyOneSided.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/merge/StrategySimpleTwoWayInCore.java