* [EGIT Patches] Sort order from hell fixes
@ 2008-02-05 23:46 Robin Rosenberg
2008-02-05 23:46 ` [EGIT PATCH 1/2] Fix git sort order compare bug Robin Rosenberg
0 siblings, 1 reply; 7+ messages in thread
From: Robin Rosenberg @ 2008-02-05 23:46 UTC (permalink / raw)
To: git; +Cc: Roger C. Soares, Dave Watson, Shawn O. Pearce
This fixes conflict detection in checkout that yielded false conflicts
and, according to a user, a problem where checkin did not find anything
to check in.
-- robin
^ permalink raw reply [flat|nested] 7+ messages in thread
* [EGIT PATCH 1/2] Fix git sort order compare bug
2008-02-05 23:46 [EGIT Patches] Sort order from hell fixes Robin Rosenberg
@ 2008-02-05 23:46 ` Robin Rosenberg
2008-02-05 23:46 ` [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts Robin Rosenberg
0 siblings, 1 reply; 7+ messages in thread
From: Robin Rosenberg @ 2008-02-05 23:46 UTC (permalink / raw)
To: git; +Cc: Roger C. Soares, Dave Watson, Shawn O. Pearce, Robin Rosenberg
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
.../tst/org/spearce/jgit/lib/T0002_Tree.java | 44 ++++++++++++++++++++
.../src/org/spearce/jgit/lib/Tree.java | 10 ++++-
2 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0002_Tree.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0002_Tree.java
index 24b368f..7c7f6c0 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0002_Tree.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0002_Tree.java
@@ -17,6 +17,7 @@
package org.spearce.jgit.lib;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
@@ -24,6 +25,49 @@ public class T0002_Tree extends RepositoryTestCase {
private static final ObjectId SOME_FAKE_ID = new ObjectId(
"0123456789abcdef0123456789abcdef01234567");
+ private int compareNamesUsingSpecialCompare(String a,String b) throws UnsupportedEncodingException {
+ char lasta = '\0';
+ byte[] abytes;
+ if (a.length() > 0 && a.charAt(a.length()-1) == '/') {
+ lasta = '/';
+ a = a.substring(0, a.length() - 1);
+ }
+ abytes = a.getBytes("ISO-8859-1");
+ char lastb = '\0';
+ byte[] bbytes;
+ if (b.length() > 0 && b.charAt(b.length()-1) == '/') {
+ lastb = '/';
+ b = b.substring(0, b.length() - 1);
+ }
+ bbytes = b.getBytes("ISO-8859-1");
+ return Tree.compareNames(abytes, bbytes, lasta, lastb);
+ }
+
+ public void test000_sort_01() throws UnsupportedEncodingException {
+ assertEquals(0, compareNamesUsingSpecialCompare("a","a"));
+ }
+ public void test000_sort_02() throws UnsupportedEncodingException {
+ assertEquals(-1, compareNamesUsingSpecialCompare("a","b"));
+ assertEquals(1, compareNamesUsingSpecialCompare("b","a"));
+ }
+ public void test000_sort_03() throws UnsupportedEncodingException {
+ assertEquals(1, compareNamesUsingSpecialCompare("a:","a"));
+ assertEquals(1, compareNamesUsingSpecialCompare("a/","a"));
+ assertEquals(-1, compareNamesUsingSpecialCompare("a","a/"));
+ assertEquals(-1, compareNamesUsingSpecialCompare("a","a:"));
+ assertEquals(1, compareNamesUsingSpecialCompare("a:","a/"));
+ assertEquals(-1, compareNamesUsingSpecialCompare("a/","a:"));
+ }
+ public void test000_sort_04() throws UnsupportedEncodingException {
+ assertEquals(-1, compareNamesUsingSpecialCompare("a.a","a/a"));
+ assertEquals(1, compareNamesUsingSpecialCompare("a/a","a.a"));
+ }
+ public void test000_sort_05() throws UnsupportedEncodingException {
+ assertEquals(-1, compareNamesUsingSpecialCompare("a.","a/"));
+ assertEquals(1, compareNamesUsingSpecialCompare("a/","a."));
+
+ }
+
public void test001_createEmpty() throws IOException {
final Tree t = new Tree(db);
assertTrue("isLoaded", t.isLoaded());
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Tree.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Tree.java
index ab83917..5d8e0e0 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Tree.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Tree.java
@@ -65,7 +65,10 @@ public class Tree extends TreeEntry implements Treeish {
else if (aj > lastb)
return 1;
else
- return 0;
+ if (j == a.length - 1)
+ return 0;
+ else
+ return -1;
}
if (k < nameEnd) {
int bk = nameUTF8[k] & 0xff;
@@ -74,7 +77,10 @@ public class Tree extends TreeEntry implements Treeish {
else if (lasta > bk)
return 1;
else
- return 0;
+ if (k == nameEnd - 1)
+ return 0;
+ else
+ return 1;
}
if (lasta < lastb)
return -1;
--
1.5.4.rc4.25.g81cc
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts
2008-02-05 23:46 ` [EGIT PATCH 1/2] Fix git sort order compare bug Robin Rosenberg
@ 2008-02-05 23:46 ` Robin Rosenberg
2008-02-06 0:50 ` Robin Rosenberg
0 siblings, 1 reply; 7+ messages in thread
From: Robin Rosenberg @ 2008-02-05 23:46 UTC (permalink / raw)
To: git; +Cc: Roger C. Soares, Dave Watson, Shawn O. Pearce, Robin Rosenberg
When checking out another branch we get a problem if our version contains
a tree name that is longer, but has another tree as a prefix.
Our tree
a/a
a.a/b
Other tree
a/a
The conflict comes from names not being compared properly in git
order.
Directory/File conflicts are not easy to handle. This solution
is cheating, but solved a real user's problem.
This commit adds test cases for the particular problem plus one
similar test that didn't fail before either.
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
.../tst/org/spearce/jgit/lib/ReadTreeTest.java | 16 ++++++++-
.../src/org/spearce/jgit/lib/IndexTreeWalker.java | 35 ++++++++++++--------
2 files changed, 36 insertions(+), 15 deletions(-)
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ReadTreeTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ReadTreeTest.java
index 7ac48c9..6faedc7 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ReadTreeTest.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ReadTreeTest.java
@@ -477,7 +477,21 @@ public class ReadTreeTest extends RepositoryTestCase {
assertNoConflicts();
}
-
+
+ public void testCloseNameConflictsX0() throws IOException {
+ setupCase(mkmap("a/a", "a/a-c"), mkmap("a/a","a/a", "b.b/b.b","b.b/b.bs"), mkmap("a/a", "a/a-c") );
+ checkout();
+ go();
+ assertNoConflicts();
+ }
+
+ public void testCloseNameConflicts1() throws IOException {
+ setupCase(mkmap("a/a", "a/a-c"), mkmap("a/a","a/a", "a.a/a.a","a.a/a.a"), mkmap("a/a", "a/a-c") );
+ checkout();
+ go();
+ assertNoConflicts();
+ }
+
private void checkout() throws IOException {
readTree = new WorkDirCheckout(db, trash, head, index, merge);
readTree.checkout();
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/IndexTreeWalker.java b/org.spearce.jgit/src/org/spearce/jgit/lib/IndexTreeWalker.java
index 93d5bb2..bc2fb23 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/IndexTreeWalker.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/IndexTreeWalker.java
@@ -19,6 +19,8 @@ package org.spearce.jgit.lib;
import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.Comparator;
import org.spearce.jgit.lib.GitIndex.Entry;
@@ -85,9 +87,28 @@ public class IndexTreeWalker {
walk(mainTree, newTree, "/");
}
+ static Comparator<TreeEntry> treeEntryPlainComparator() {
+ return new Comparator<TreeEntry>() {
+ public int compare(TreeEntry o1, TreeEntry o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ };
+ }
+
+ static Comparator<Entry> indexEntryPlainComparator() {
+ return new Comparator<Entry>() {
+ public int compare(Entry o1, Entry o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ };
+ }
+
private void walk(Tree tree, Tree auxTree, String curDir) throws IOException {
TreeEntry[] treeMembers = tree == null ? new TreeEntry[0] : tree.members();
TreeEntry[] auxTreeMembers = auxTree == null ? new TreeEntry[0] : auxTree.members();
+ Arrays.sort(treeMembers, treeEntryPlainComparator());
+ Arrays.sort(auxTreeMembers, treeEntryPlainComparator());
+ Arrays.sort(indexMembers, indexEntryPlainComparator());
int treeCounter = 0;
int auxTreeCounter = 0;
@@ -308,18 +329,4 @@ public class IndexTreeWalker {
}
return t1.getName().compareTo(t2.getName());
}
-
- static int compare(byte[] name1, byte[] name2) {
- for (int i = 0; i < name1.length && i < name2.length; i++) {
- if (name1[i] < name2[i])
- return -1;
- if (name1[i] > name2[i])
- return 1;
- }
- if (name1.length < name2.length)
- return -1;
- if (name2.length < name1.length)
- return 1;
- return 0;
- }
}
--
1.5.4.rc4.25.g81cc
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts
2008-02-05 23:46 ` [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts Robin Rosenberg
@ 2008-02-06 0:50 ` Robin Rosenberg
2008-02-10 20:13 ` Robin Rosenberg
0 siblings, 1 reply; 7+ messages in thread
From: Robin Rosenberg @ 2008-02-06 0:50 UTC (permalink / raw)
To: git; +Cc: Roger C. Soares, Dave Watson, Shawn O. Pearce
Forget this one, it just causes other problems.
-- robin
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts
2008-02-06 0:50 ` Robin Rosenberg
@ 2008-02-10 20:13 ` Robin Rosenberg
2008-02-10 20:18 ` Robin Rosenberg
0 siblings, 1 reply; 7+ messages in thread
From: Robin Rosenberg @ 2008-02-10 20:13 UTC (permalink / raw)
To: git; +Cc: Roger C. Soares, Dave Watson, Shawn O. Pearce
>From 39d5e19cd2e16f476501fda71d6551e51225ed2d Mon Sep 17 00:00:00 2001
From: Robin Rosenberg <robin.rosenberg@dewire.com>
Date: Sun, 10 Feb 2008 20:03:06 +0100
Subject: [PATCH] Extend IndexDiffTest with more tests
In order to fix a bug where everything is marked as modified, or in some cases
not modified the unit tests. The fixes here continue to work, but I want to
emphasize the tests. Comments?
---
.../tst/org/spearce/jgit/lib/IndexDiffTest.java | 67 ++++++++++++++++++++
1 files changed, 67 insertions(+), 0 deletions(-)
One more to come (that fails).
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
index 629c06c..4692fa2 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
@@ -93,4 +93,71 @@ public class IndexDiffTest extends RepositoryTestCase {
assertEquals(0, diff.getMissing().size());
}
+ public void testUnchangedSimple() throws IOException {
+ GitIndex index = new GitIndex(db);
+
+ index.add(trash, writeTrashFile("a.b", "a.b"));
+ index.add(trash, writeTrashFile("a.c", "a.c"));
+ index.add(trash, writeTrashFile("a=c", "a=c"));
+ index.add(trash, writeTrashFile("a=d", "a=d"));
+
+ Tree tree = new Tree(db);
+ // got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin
+ tree.addFile("a.b").setId(new ObjectId("f6f28df96c2b40c951164286e08be7c38ec74851"));
+ tree.addFile("a.c").setId(new ObjectId("6bc0e647512d2a0bef4f26111e484dc87df7f5ca"));
+ tree.addFile("a=c").setId(new ObjectId("06022365ddbd7fb126761319633bf73517770714"));
+ tree.addFile("a=d").setId(new ObjectId("fa6414df3da87840700e9eeb7fc261dd77ccd5c2"));
+
+ tree.setId(new ObjectWriter(db).writeTree(tree));
+
+ IndexDiff diff = new IndexDiff(tree, index);
+ diff.diff();
+ assertEquals(0, diff.getChanged().size());
+ assertEquals(0, diff.getAdded().size());
+ assertEquals(0, diff.getRemoved().size());
+ assertEquals(0, diff.getMissing().size());
+ assertEquals(0, diff.getModified().size());
+ }
+
+ /**
+ * This test has both files and directories that involve
+ * the tricky ordering used by Git.
+ *
+ * @throws IOException
+ */
+ public void testUnchangedComplex() throws IOException {
+ GitIndex index = new GitIndex(db);
+
+ index.add(trash, writeTrashFile("a.b", "a.b"));
+ index.add(trash, writeTrashFile("a.c", "a.c"));
+ index.add(trash, writeTrashFile("a/b.b/b", "a/b.b/b"));
+ index.add(trash, writeTrashFile("a/b", "a/b"));
+ index.add(trash, writeTrashFile("a/c", "a/c"));
+ index.add(trash, writeTrashFile("a=c", "a=c"));
+ index.add(trash, writeTrashFile("a=d", "a=d"));
+
+ Tree tree = new Tree(db);
+ // got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin
+ tree.addFile("a.b").setId(new ObjectId("f6f28df96c2b40c951164286e08be7c38ec74851"));
+ tree.addFile("a.c").setId(new ObjectId("6bc0e647512d2a0bef4f26111e484dc87df7f5ca"));
+ tree.addFile("a/b.b/b").setId(new ObjectId("8d840bd4e2f3a48ff417c8e927d94996849933fd"));
+ tree.addFile("a/b").setId(new ObjectId("db89c972fc57862eae378f45b74aca228037d415"));
+ tree.addFile("a/c").setId(new ObjectId("52ad142a008aeb39694bafff8e8f1be75ed7f007"));
+ tree.addFile("a=c").setId(new ObjectId("06022365ddbd7fb126761319633bf73517770714"));
+ tree.addFile("a=d").setId(new ObjectId("fa6414df3da87840700e9eeb7fc261dd77ccd5c2"));
+
+ Tree tree3 = (Tree) tree.findTreeMember("a/b.b");
+ tree3.setId(new ObjectWriter(db).writeTree(tree3));
+ Tree tree2 = (Tree) tree.findTreeMember("a");
+ tree2.setId(new ObjectWriter(db).writeTree(tree2));
+ tree.setId(new ObjectWriter(db).writeTree(tree));
+
+ IndexDiff diff = new IndexDiff(tree, index);
+ diff.diff();
+ assertEquals(0, diff.getChanged().size());
+ assertEquals(0, diff.getAdded().size());
+ assertEquals(0, diff.getRemoved().size());
+ assertEquals(0, diff.getMissing().size());
+ assertEquals(0, diff.getModified().size());
+ }
}
--
1.5.4.rc4.25.g81cc
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts
2008-02-10 20:13 ` Robin Rosenberg
@ 2008-02-10 20:18 ` Robin Rosenberg
2008-02-10 21:11 ` David Watson
0 siblings, 1 reply; 7+ messages in thread
From: Robin Rosenberg @ 2008-02-10 20:18 UTC (permalink / raw)
To: git; +Cc: Roger C. Soares, Dave Watson, Shawn O. Pearce
söndagen den 10 februari 2008 skrev Robin Rosenberg:
> In order to fix a bug where everything is marked as modified, or in some cases
> not modified the unit tests. The fixes here continue to work, but I want to
> emphasize the tests. Comments?
Actually the reverse. This the extension that works, the previous mail contains
the test that fails, i.e. testUnchangedComplex().
You need this patch first though.
-- robin
From 6d169c4e682359d8832047662591e341e91d186d Mon Sep 17 00:00:00 2001
From: Robin Rosenberg <robin.rosenberg@dewire.com>
Date: Sun, 10 Feb 2008 20:01:53 +0100
Subject: [PATCH] Tighten IndexDiffTest to make it test better what it claims to test
---
.../tst/org/spearce/jgit/lib/IndexDiffTest.java | 22 ++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
index ba5d8d7..629c06c 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
@@ -31,8 +31,12 @@ public class IndexDiffTest extends RepositoryTestCase {
index.add(trash, new File(trash, "dir/subfile"));
IndexDiff diff = new IndexDiff(tree, index);
diff.diff();
+ assertEquals(2, diff.getAdded().size());
assertTrue(diff.getAdded().contains("file1"));
assertTrue(diff.getAdded().contains("dir/subfile"));
+ assertEquals(0, diff.getChanged().size());
+ assertEquals(0, diff.getModified().size());
+ assertEquals(0, diff.getRemoved().size());
}
public void testRemoved() throws IOException {
@@ -44,11 +48,20 @@ public class IndexDiffTest extends RepositoryTestCase {
tree.addFile("file2");
tree.addFile("dir/file3");
assertEquals(2, tree.memberCount());
+ tree.findBlobMember("file2").setId(new ObjectId("30d67d4672d5c05833b7192cc77a79eaafb5c7ad"));
+ Tree tree2 = (Tree) tree.findTreeMember("dir");
+ tree2.findBlobMember("file3").setId(new ObjectId("873fb8d667d05436d728c52b1d7a09528e6eb59b"));
+ tree2.setId(new ObjectWriter(db).writeTree(tree2));
+ tree.setId(new ObjectWriter(db).writeTree(tree));
IndexDiff diff = new IndexDiff(tree, index);
diff.diff();
+ assertEquals(2, diff.getRemoved().size());
assertTrue(diff.getRemoved().contains("file2"));
assertTrue(diff.getRemoved().contains("dir/file3"));
+ assertEquals(0, diff.getChanged().size());
+ assertEquals(0, diff.getModified().size());
+ assertEquals(0, diff.getAdded().size());
}
public void testModified() throws IOException {
@@ -65,10 +78,19 @@ public class IndexDiffTest extends RepositoryTestCase {
tree.addFile("dir/file3").setId(new ObjectId("0123456789012345678901234567890123456789"));
assertEquals(2, tree.memberCount());
+ Tree tree2 = (Tree) tree.findTreeMember("dir");
+ tree2.setId(new ObjectWriter(db).writeTree(tree2));
+ tree.setId(new ObjectWriter(db).writeTree(tree));
IndexDiff diff = new IndexDiff(tree, index);
diff.diff();
+ assertEquals(2, diff.getChanged().size());
assertTrue(diff.getChanged().contains("file2"));
assertTrue(diff.getChanged().contains("dir/file3"));
+ assertEquals(1, diff.getModified().size());
assertTrue(diff.getModified().contains("dir/file3"));
+ assertEquals(0, diff.getAdded().size());
+ assertEquals(0, diff.getRemoved().size());
+ assertEquals(0, diff.getMissing().size());
}
+
}
--
1.5.4.rc4.25.g81cc
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts
2008-02-10 20:18 ` Robin Rosenberg
@ 2008-02-10 21:11 ` David Watson
0 siblings, 0 replies; 7+ messages in thread
From: David Watson @ 2008-02-10 21:11 UTC (permalink / raw)
To: Robin Rosenberg; +Cc: git, Roger C. Soares, Shawn O. Pearce
Looks reasonable enough to me.
On Sun, Feb 10, 2008 at 09:18:29PM +0100, Robin Rosenberg wrote:
> söndagen den 10 februari 2008 skrev Robin Rosenberg:
> > In order to fix a bug where everything is marked as modified, or in some cases
> > not modified the unit tests. The fixes here continue to work, but I want to
> > emphasize the tests. Comments?
>
> Actually the reverse. This the extension that works, the previous mail contains
> the test that fails, i.e. testUnchangedComplex().
>
> You need this patch first though.
>
> -- robin
>
> From 6d169c4e682359d8832047662591e341e91d186d Mon Sep 17 00:00:00 2001
> From: Robin Rosenberg <robin.rosenberg@dewire.com>
> Date: Sun, 10 Feb 2008 20:01:53 +0100
> Subject: [PATCH] Tighten IndexDiffTest to make it test better what it claims to test
>
> ---
> .../tst/org/spearce/jgit/lib/IndexDiffTest.java | 22 ++++++++++++++++++++
> 1 files changed, 22 insertions(+), 0 deletions(-)
>
> diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
> b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
> index ba5d8d7..629c06c 100644
> --- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
> +++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/IndexDiffTest.java
> @@ -31,8 +31,12 @@ public class IndexDiffTest extends RepositoryTestCase {
> index.add(trash, new File(trash, "dir/subfile"));
> IndexDiff diff = new IndexDiff(tree, index);
> diff.diff();
> + assertEquals(2, diff.getAdded().size());
> assertTrue(diff.getAdded().contains("file1"));
> assertTrue(diff.getAdded().contains("dir/subfile"));
> + assertEquals(0, diff.getChanged().size());
> + assertEquals(0, diff.getModified().size());
> + assertEquals(0, diff.getRemoved().size());
> }
>
> public void testRemoved() throws IOException {
> @@ -44,11 +48,20 @@ public class IndexDiffTest extends RepositoryTestCase {
> tree.addFile("file2");
> tree.addFile("dir/file3");
> assertEquals(2, tree.memberCount());
> + tree.findBlobMember("file2").setId(new ObjectId("30d67d4672d5c05833b7192cc77a79eaafb5c7ad"));
> + Tree tree2 = (Tree) tree.findTreeMember("dir");
> + tree2.findBlobMember("file3").setId(new ObjectId("873fb8d667d05436d728c52b1d7a09528e6eb59b"));
> + tree2.setId(new ObjectWriter(db).writeTree(tree2));
> + tree.setId(new ObjectWriter(db).writeTree(tree));
>
> IndexDiff diff = new IndexDiff(tree, index);
> diff.diff();
> + assertEquals(2, diff.getRemoved().size());
> assertTrue(diff.getRemoved().contains("file2"));
> assertTrue(diff.getRemoved().contains("dir/file3"));
> + assertEquals(0, diff.getChanged().size());
> + assertEquals(0, diff.getModified().size());
> + assertEquals(0, diff.getAdded().size());
> }
>
> public void testModified() throws IOException {
> @@ -65,10 +78,19 @@ public class IndexDiffTest extends RepositoryTestCase {
> tree.addFile("dir/file3").setId(new ObjectId("0123456789012345678901234567890123456789"));
> assertEquals(2, tree.memberCount());
>
> + Tree tree2 = (Tree) tree.findTreeMember("dir");
> + tree2.setId(new ObjectWriter(db).writeTree(tree2));
> + tree.setId(new ObjectWriter(db).writeTree(tree));
> IndexDiff diff = new IndexDiff(tree, index);
> diff.diff();
> + assertEquals(2, diff.getChanged().size());
> assertTrue(diff.getChanged().contains("file2"));
> assertTrue(diff.getChanged().contains("dir/file3"));
> + assertEquals(1, diff.getModified().size());
> assertTrue(diff.getModified().contains("dir/file3"));
> + assertEquals(0, diff.getAdded().size());
> + assertEquals(0, diff.getRemoved().size());
> + assertEquals(0, diff.getMissing().size());
> }
> +
> }
> --
> 1.5.4.rc4.25.g81cc
>
--
Dave Watson
Software Engineer
MIMvista Corp
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-02-10 21:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-05 23:46 [EGIT Patches] Sort order from hell fixes Robin Rosenberg
2008-02-05 23:46 ` [EGIT PATCH 1/2] Fix git sort order compare bug Robin Rosenberg
2008-02-05 23:46 ` [EGIT PATCH 2/2] Resort entries in "normal" order before looking for conflicts Robin Rosenberg
2008-02-06 0:50 ` Robin Rosenberg
2008-02-10 20:13 ` Robin Rosenberg
2008-02-10 20:18 ` Robin Rosenberg
2008-02-10 21:11 ` David Watson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).