diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java index 544d591fe..322d47a09 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java @@ -88,6 +88,7 @@ public void setUp() throws Exception { git.add().addFilepattern("file.txt").call(); head = git.commit().setMessage("add file").call(); assertNotNull(head); + writeTrashFile("untracked.txt", "content"); } /** diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashCreateCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashCreateCommand.java index ba56c1a71..fc21b919b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashCreateCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashCreateCommand.java @@ -241,6 +241,7 @@ public RevCommit call() throws GitAPIException { MutableObjectId id = new MutableObjectId(); List wtEdits = new ArrayList(); List wtDeletes = new ArrayList(); + boolean hasChanges = false; do { AbstractTreeIterator headIter = treeWalk.getTree(0, AbstractTreeIterator.class); @@ -254,9 +255,12 @@ public RevCommit call() throws GitAPIException { new UnmergedPathException( indexIter.getDirCacheEntry())); if (wtIter != null) { - if (indexIter != null && wtIter.idEqual(indexIter) - || headIter != null - && wtIter.idEqual(headIter)) + if (indexIter == null && headIter == null) + continue; + hasChanges = true; + if (indexIter != null && wtIter.idEqual(indexIter)) + continue; + if (headIter != null && wtIter.idEqual(headIter)) continue; treeWalk.getObjectId(id, 0); final DirCacheEntry entry = new DirCacheEntry( @@ -278,10 +282,14 @@ public void apply(DirCacheEntry ent) { } }); } + hasChanges = true; if (wtIter == null && headIter != null) wtDeletes.add(treeWalk.getPathString()); } while (treeWalk.next()); + if (!hasChanges) + return null; + String branch = Repository.shortenRefName(head.getTarget() .getName());