Browse Source

Fix CommitCommand.setOnly()

When CommitCommand.setOnly(path) is used a temporary index has to be
created containing only modifications for the specified pathes. The
process to fill this temporary index was broken because filling the
index was stopped when we reached the first untracked file. Instead the
process to fill the temporary index should continue until we processed
all pathes.

Bug: 451465
Change-Id: I22af50d70bd3b81e7c056358724956122b0d158d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
stable-4.1
Christian Halstrick 9 years ago committed by Matthias Sohn
parent
commit
6d09c486ed
  1. 11
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java
  2. 2
      org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java

11
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java

@ -514,6 +514,17 @@ public class CommitCommandTest extends RepositoryTestCase {
}
}
@Test
public void commitOnlyShouldHandleIgnored() throws Exception {
try (Git git = new Git(db)) {
writeTrashFile("subdir/foo", "Hello World");
writeTrashFile("subdir/bar", "Hello World");
writeTrashFile(".gitignore", "bar");
git.add().addFilepattern("subdir").call();
git.commit().setOnly("subdir").setMessage("first commit").call();
}
}
private static void addUnmergedEntry(String file, DirCacheBuilder builder) {
DirCacheEntry stage1 = new DirCacheEntry(file, DirCacheEntry.STAGE_1);
DirCacheEntry stage2 = new DirCacheEntry(file, DirCacheEntry.STAGE_2);

2
org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java

@ -358,7 +358,7 @@ public class CommitCommand extends GitCommand<RevCommit> {
// check if entry refers to a tracked file
boolean tracked = dcTree != null || hTree != null;
if (!tracked)
break;
continue;
// for an unmerged path, DirCacheBuildIterator will yield 3
// entries, we only want to add one

Loading…
Cancel
Save