Merge "IndexDiff: conflicting files aren't properly shown"
This commit is contained in:
commit
b8fdda11cc
|
@ -176,15 +176,90 @@ public void testConflicting() throws Exception {
|
||||||
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
|
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
|
||||||
diff.diff();
|
diff.diff();
|
||||||
|
|
||||||
assertEquals("[a, b]",
|
assertEquals("[b]",
|
||||||
new TreeSet<String>(diff.getChanged()).toString());
|
new TreeSet<String>(diff.getChanged()).toString());
|
||||||
assertEquals("[a]", diff.getAdded().toString());
|
assertEquals("[]", diff.getAdded().toString());
|
||||||
assertEquals("[]", diff.getRemoved().toString());
|
assertEquals("[]", diff.getRemoved().toString());
|
||||||
assertEquals("[a]", diff.getMissing().toString());
|
assertEquals("[]", diff.getMissing().toString());
|
||||||
assertEquals("[a]", diff.getModified().toString());
|
assertEquals("[]", diff.getModified().toString());
|
||||||
assertEquals("[a]", diff.getConflicting().toString());
|
assertEquals("[a]", diff.getConflicting().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConflictingDeletedAndModified() 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 and delete "a"
|
||||||
|
createBranch(initialCommit, "refs/heads/side");
|
||||||
|
checkoutBranch("refs/heads/side");
|
||||||
|
git.rm().addFilepattern("a").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("[]", new TreeSet<String>(diff.getChanged()).toString());
|
||||||
|
assertEquals("[]", diff.getAdded().toString());
|
||||||
|
assertEquals("[]", diff.getRemoved().toString());
|
||||||
|
assertEquals("[]", diff.getMissing().toString());
|
||||||
|
assertEquals("[]", diff.getModified().toString());
|
||||||
|
assertEquals("[a]", diff.getConflicting().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConflictingFromMultipleCreations() throws Exception {
|
||||||
|
Git git = new Git(db);
|
||||||
|
|
||||||
|
writeTrashFile("a", "1\na\n3\n");
|
||||||
|
git.add().addFilepattern("a").call();
|
||||||
|
RevCommit initialCommit = git.commit().setMessage("initial").call();
|
||||||
|
|
||||||
|
createBranch(initialCommit, "refs/heads/side");
|
||||||
|
checkoutBranch("refs/heads/side");
|
||||||
|
|
||||||
|
writeTrashFile("b", "1\nb(side)\n3\n");
|
||||||
|
git.add().addFilepattern("b").call();
|
||||||
|
RevCommit secondCommit = git.commit().setMessage("side").call();
|
||||||
|
|
||||||
|
checkoutBranch("refs/heads/master");
|
||||||
|
|
||||||
|
writeTrashFile("b", "1\nb(main)\n3\n");
|
||||||
|
git.add().addFilepattern("b").call();
|
||||||
|
git.commit().setMessage("main").call();
|
||||||
|
|
||||||
|
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("[]", new TreeSet<String>(diff.getChanged()).toString());
|
||||||
|
assertEquals("[]", diff.getAdded().toString());
|
||||||
|
assertEquals("[]", diff.getRemoved().toString());
|
||||||
|
assertEquals("[]", diff.getMissing().toString());
|
||||||
|
assertEquals("[]", diff.getModified().toString());
|
||||||
|
assertEquals("[b]", diff.getConflicting().toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUnchangedSimple() throws IOException {
|
public void testUnchangedSimple() throws IOException {
|
||||||
GitIndex index = new GitIndex(db);
|
GitIndex index = new GitIndex(db);
|
||||||
|
|
|
@ -286,6 +286,15 @@ public boolean diff(final ProgressMonitor monitor, int estWorkTreeSize,
|
||||||
WorkingTreeIterator workingTreeIterator = treeWalk.getTree(WORKDIR,
|
WorkingTreeIterator workingTreeIterator = treeWalk.getTree(WORKDIR,
|
||||||
WorkingTreeIterator.class);
|
WorkingTreeIterator.class);
|
||||||
|
|
||||||
|
if (dirCacheIterator != null) {
|
||||||
|
final DirCacheEntry dirCacheEntry = dirCacheIterator
|
||||||
|
.getDirCacheEntry();
|
||||||
|
if (dirCacheEntry != null && dirCacheEntry.getStage() > 0) {
|
||||||
|
conflicts.add(treeWalk.getPathString());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (treeIterator != null) {
|
if (treeIterator != null) {
|
||||||
if (dirCacheIterator != null) {
|
if (dirCacheIterator != null) {
|
||||||
if (!treeIterator.idEqual(dirCacheIterator)
|
if (!treeIterator.idEqual(dirCacheIterator)
|
||||||
|
@ -324,12 +333,6 @@ public boolean diff(final ProgressMonitor monitor, int estWorkTreeSize,
|
||||||
modified.add(treeWalk.getPathString());
|
modified.add(treeWalk.getPathString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final DirCacheEntry dirCacheEntry = dirCacheIterator
|
|
||||||
.getDirCacheEntry();
|
|
||||||
if (dirCacheEntry != null && dirCacheEntry.getStage() > 0) {
|
|
||||||
conflicts.add(treeWalk.getPathString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue