From 83b0d70958090625dc5cb8e345a20f18da60f6f7 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 12 Dec 2008 14:05:56 -0800 Subject: [PATCH] Use FileMode.MISSING when a file is added or deleted rather than null Null is better used to indicate "no mode information at all" in the patch, while FileMode.MISSING is already commonly used within the TreeWalk code to mean "this path doesn't exist in this tree". In the context of a patch to create or delete a file, MISSING makes a lot more sense for the application to work with. Signed-off-by: Shawn O. Pearce Signed-off-by: Robin Rosenberg --- org.spearce.jgit.test/tst/org/spearce/jgit/patch/FileHeaderTest.java | 4 ++-- org.spearce.jgit.test/tst/org/spearce/jgit/patch/PatchTest.java | 1 + org.spearce.jgit/src/org/spearce/jgit/patch/FileHeader.java | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/patch/FileHeaderTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/patch/FileHeaderTest.java index 36c528e1..69e06ab1 100644 --- a/org.spearce.jgit.test/tst/org/spearce/jgit/patch/FileHeaderTest.java +++ b/org.spearce.jgit.test/tst/org/spearce/jgit/patch/FileHeaderTest.java @@ -153,7 +153,7 @@ public class FileHeaderTest extends TestCase { assertSame(FileHeader.PatchType.UNIFIED, fh.getPatchType()); assertTrue(fh.hasMetaDataChanges()); - assertNull(fh.getOldMode()); + assertSame(FileMode.MISSING, fh.getOldMode()); assertSame(FileMode.REGULAR_FILE, fh.getNewMode()); assertEquals("0000000", fh.getOldId().name()); @@ -179,7 +179,7 @@ public class FileHeaderTest extends TestCase { assertTrue(fh.hasMetaDataChanges()); assertSame(FileMode.REGULAR_FILE, fh.getOldMode()); - assertNull(fh.getNewMode()); + assertSame(FileMode.MISSING, fh.getNewMode()); assertEquals("7898192", fh.getOldId().name()); assertEquals("0000000", fh.getNewId().name()); diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/patch/PatchTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/patch/PatchTest.java index 13eab5f0..2c617d3a 100644 --- a/org.spearce.jgit.test/tst/org/spearce/jgit/patch/PatchTest.java +++ b/org.spearce.jgit.test/tst/org/spearce/jgit/patch/PatchTest.java @@ -160,6 +160,7 @@ public class PatchTest extends TestCase { assertNotNull(fh.getOldId()); assertNotNull(fh.getNewId()); assertEquals("0000000", fh.getOldId().name()); + assertSame(FileMode.MISSING, fh.getOldMode()); assertSame(FileMode.REGULAR_FILE, fh.getNewMode()); assertTrue(fh.getNewName().startsWith( "org.spearce.egit.ui/icons/toolbar/")); diff --git a/org.spearce.jgit/src/org/spearce/jgit/patch/FileHeader.java b/org.spearce.jgit/src/org/spearce/jgit/patch/FileHeader.java index 44830796..8bdb288a 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/patch/FileHeader.java +++ b/org.spearce.jgit/src/org/spearce/jgit/patch/FileHeader.java @@ -386,9 +386,11 @@ public class FileHeader { } else if (match(buf, ptr, DELETED_FILE_MODE) >= 0) { oldMode = parseFileMode(ptr + DELETED_FILE_MODE.length, eol); + newMode = FileMode.MISSING; changeType = ChangeType.DELETE; } else if (match(buf, ptr, NEW_FILE_MODE) >= 0) { + oldMode = FileMode.MISSING; newMode = parseFileMode(ptr + NEW_FILE_MODE.length, eol); changeType = ChangeType.ADD; -- 2.11.4.GIT