|
|
|
@ -50,11 +50,16 @@ import static org.junit.Assert.assertTrue;
|
|
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.util.TreeSet; |
|
|
|
|
|
|
|
|
|
import org.eclipse.jgit.api.Git; |
|
|
|
|
import org.eclipse.jgit.api.MergeResult; |
|
|
|
|
import org.eclipse.jgit.api.MergeResult.MergeStatus; |
|
|
|
|
import org.eclipse.jgit.dircache.DirCache; |
|
|
|
|
import org.eclipse.jgit.dircache.DirCacheEditor; |
|
|
|
|
import org.eclipse.jgit.dircache.DirCacheEntry; |
|
|
|
|
import org.eclipse.jgit.merge.MergeStrategy; |
|
|
|
|
import org.eclipse.jgit.revwalk.RevCommit; |
|
|
|
|
import org.eclipse.jgit.treewalk.FileTreeIterator; |
|
|
|
|
import org.junit.Test; |
|
|
|
|
|
|
|
|
@ -139,6 +144,47 @@ public class IndexDiffTest extends RepositoryTestCase {
|
|
|
|
|
assertEquals(0, diff.getMissing().size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testConflicting() throws Exception { |
|
|
|
|
Git git = new Git(db); |
|
|
|
|
|
|
|
|
|
writeTrashFile("a", "1\na\n3\n"); |
|
|
|
|
writeTrashFile("b", "1\nb\n3\n"); |
|
|
|
|
git.add().addFilepattern("a").addFilepattern("b").call(); |
|
|
|
|
RevCommit initialCommit = git.commit().setMessage("initial").call(); |
|
|
|
|
|
|
|
|
|
// create side branch with two modifications
|
|
|
|
|
createBranch(initialCommit, "refs/heads/side"); |
|
|
|
|
checkoutBranch("refs/heads/side"); |
|
|
|
|
writeTrashFile("a", "1\na(side)\n3\n"); |
|
|
|
|
writeTrashFile("b", "1\nb\n3\n(side)"); |
|
|
|
|
git.add().addFilepattern("a").addFilepattern("b").call(); |
|
|
|
|
RevCommit secondCommit = git.commit().setMessage("side").call(); |
|
|
|
|
|
|
|
|
|
// update a on master to generate conflict
|
|
|
|
|
checkoutBranch("refs/heads/master"); |
|
|
|
|
writeTrashFile("a", "1\na(main)\n3\n"); |
|
|
|
|
git.add().addFilepattern("a").call(); |
|
|
|
|
git.commit().setMessage("main").call(); |
|
|
|
|
|
|
|
|
|
// merge side with master
|
|
|
|
|
MergeResult result = git.merge().include(secondCommit.getId()) |
|
|
|
|
.setStrategy(MergeStrategy.RESOLVE).call(); |
|
|
|
|
assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus()); |
|
|
|
|
|
|
|
|
|
FileTreeIterator iterator = new FileTreeIterator(db); |
|
|
|
|
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator); |
|
|
|
|
diff.diff(); |
|
|
|
|
|
|
|
|
|
assertEquals("[a, b]", |
|
|
|
|
new TreeSet<String>(diff.getChanged()).toString()); |
|
|
|
|
assertEquals("[a]", diff.getAdded().toString()); |
|
|
|
|
assertEquals("[]", diff.getRemoved().toString()); |
|
|
|
|
assertEquals("[a]", diff.getMissing().toString()); |
|
|
|
|
assertEquals("[a]", diff.getModified().toString()); |
|
|
|
|
assertEquals("[a]", diff.getConflicting().toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testUnchangedSimple() throws IOException { |
|
|
|
|
GitIndex index = new GitIndex(db); |
|
|
|
|