Browse Source

Untracked files should not be included in stash

The previous code stashed untracked files and left them
in the work tree.

Bug: 403282
Change-Id: I71727addb2b55fb8e409cae2b6af8138b1ff7ef1
tags/v3.0.0.201305080800-m7
Robin Rosenberg 11 years ago
parent
commit
7a42b7fb95

+ 1
- 0
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java View File

@@ -88,6 +88,7 @@ public class StashCreateCommandTest extends RepositoryTestCase {
git.add().addFilepattern("file.txt").call();
head = git.commit().setMessage("add file").call();
assertNotNull(head);
writeTrashFile("untracked.txt", "content");
}

/**

+ 11
- 3
org.eclipse.jgit/src/org/eclipse/jgit/api/StashCreateCommand.java View File

@@ -241,6 +241,7 @@ public class StashCreateCommand extends GitCommand<RevCommit> {
MutableObjectId id = new MutableObjectId();
List<PathEdit> wtEdits = new ArrayList<PathEdit>();
List<String> wtDeletes = new ArrayList<String>();
boolean hasChanges = false;
do {
AbstractTreeIterator headIter = treeWalk.getTree(0,
AbstractTreeIterator.class);
@@ -254,9 +255,12 @@ public class StashCreateCommand extends GitCommand<RevCommit> {
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 class StashCreateCommand extends GitCommand<RevCommit> {
}
});
}
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());


Loading…
Cancel
Save