|
|
@@ -51,6 +51,7 @@ import java.io.IOException; |
|
|
|
import org.eclipse.jgit.api.Git; |
|
|
|
import org.eclipse.jgit.dircache.DirCache; |
|
|
|
import org.eclipse.jgit.dircache.DirCacheEditor; |
|
|
|
import org.eclipse.jgit.dircache.DirCacheEntry; |
|
|
|
import org.eclipse.jgit.treewalk.FileTreeIterator; |
|
|
|
|
|
|
|
public class IndexDiffTest extends RepositoryTestCase { |
|
|
@@ -234,6 +235,39 @@ public class IndexDiffTest extends RepositoryTestCase { |
|
|
|
assertTrue(diff.getUntracked().contains(path)); |
|
|
|
} |
|
|
|
|
|
|
|
public void testAssumeUnchanged() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
String path = "file"; |
|
|
|
writeTrashFile(path, "content"); |
|
|
|
git.add().addFilepattern(path).call(); |
|
|
|
String path2 = "file2"; |
|
|
|
writeTrashFile(path2, "content"); |
|
|
|
git.add().addFilepattern(path2).call(); |
|
|
|
git.commit().setMessage("commit").call(); |
|
|
|
assumeUnchanged(path2); |
|
|
|
writeTrashFile(path, "more content"); |
|
|
|
writeTrashFile(path2, "more content"); |
|
|
|
|
|
|
|
FileTreeIterator iterator = new FileTreeIterator(db); |
|
|
|
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator); |
|
|
|
diff.diff(); |
|
|
|
assertEquals(1, diff.getAssumeUnchanged().size()); |
|
|
|
assertEquals(2, diff.getModified().size()); |
|
|
|
assertEquals(0, diff.getChanged().size()); |
|
|
|
|
|
|
|
git.add().addFilepattern(".").call(); |
|
|
|
|
|
|
|
iterator = new FileTreeIterator(db); |
|
|
|
diff = new IndexDiff(db, Constants.HEAD, iterator); |
|
|
|
diff.diff(); |
|
|
|
assertEquals(1, diff.getAssumeUnchanged().size()); |
|
|
|
assertEquals(1, diff.getModified().size()); |
|
|
|
assertEquals(1, diff.getChanged().size()); |
|
|
|
assertTrue(diff.getAssumeUnchanged().contains("file2")); |
|
|
|
assertTrue(diff.getModified().contains("file2")); |
|
|
|
assertTrue(diff.getChanged().contains("file")); |
|
|
|
} |
|
|
|
|
|
|
|
private void removeFromIndex(String path) throws IOException { |
|
|
|
final DirCache dirc = db.lockDirCache(); |
|
|
|
final DirCacheEditor edit = dirc.editor(); |
|
|
@@ -241,4 +275,15 @@ public class IndexDiffTest extends RepositoryTestCase { |
|
|
|
if (!edit.commit()) |
|
|
|
throw new IOException("could not commit"); |
|
|
|
} |
|
|
|
|
|
|
|
private void assumeUnchanged(String path) throws IOException { |
|
|
|
final DirCache dirc = db.lockDirCache(); |
|
|
|
final DirCacheEntry ent = dirc.getEntry(path); |
|
|
|
if (ent != null) |
|
|
|
ent.setAssumeValid(true); |
|
|
|
dirc.write(); |
|
|
|
if (!dirc.commit()) |
|
|
|
throw new IOException("could not commit"); |
|
|
|
} |
|
|
|
|
|
|
|
} |