From: Matthias Sohn Date: Thu, 27 Jan 2011 16:20:04 +0000 (+0100) Subject: Hard reset should not report conflict on untracked file X-Git-Tag: v0.11.1~39 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=91af19de56759c04ca45eff91a8dfe850fa2fdf0;p=jgit.git Hard reset should not report conflict on untracked file This problem surfaced since EGit Core ResetOperationTest is failing since change I26806d21. JGit detected checkout conflict for untracked files which never were tracked by the repository. "git reset --hard" in c git also doesn't remove such untracked files. Change-Id: Icc8e1c548ecf6ed48bd2979c81eeb6f578d347bd Signed-off-by: Matthias Sohn --- diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java index 1b4a9ff231..90a3f94167 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java @@ -128,11 +128,14 @@ public class DirCacheCheckoutTest extends ReadTreeTest { RevCommit topic = git.commit().setMessage("topic-1").call(); assertIndex(mkmap("f", "f()\nside", "G/i", "i()")); + writeTrashFile("untracked", "untracked"); + resetHard(master); assertIndex(mkmap("f", "f()\nmaster", "D/g", "g()\ng2()", "E/h", "h()")); resetHard(topic); assertIndex(mkmap("f", "f()\nside", "G/i", "i()")); - assertWorkDir(mkmap("f", "f()\nside", "G/i", "i()")); + assertWorkDir(mkmap("f", "f()\nside", "G/i", "i()", "untracked", + "untracked")); assertEquals(MergeStatus.CONFLICTING, git.merge().include(master) .call().getMergeStatus()); @@ -143,7 +146,7 @@ public class DirCacheCheckoutTest extends ReadTreeTest { resetHard(master); assertIndex(mkmap("f", "f()\nmaster", "D/g", "g()\ng2()", "E/h", "h()")); assertWorkDir(mkmap("f", "f()\nmaster", "D/g", "g()\ng2()", "E/h", - "h()")); + "h()", "untracked", "untracked")); } private DirCacheCheckout resetHard(RevCommit commit) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java index 9b0bc7b01c..25acf16a35 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java @@ -351,12 +351,8 @@ public class DirCacheCheckout { remove(i.getEntryPathString()); conflicts.remove(i.getEntryPathString()); } else { - // We are about to remove an untracked file. Check that - // it is ignored - otherwise that's an conflict - if (!f.isEntryIgnored()) - conflicts.add(walk.getPathString()); - else - remove(f.getEntryPathString()); + // untracked file, neither contained in tree to merge + // nor in index } } } else {