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>
This commit is contained in:
parent
b10259f44b
commit
6d09c486ed
|
@ -514,6 +514,17 @@ public void commitOnlyShouldCommitUnmergedPathAndNotAffectOthers()
|
|||
}
|
||||
}
|
||||
|
||||
@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);
|
||||
|
|
|
@ -358,7 +358,7 @@ private DirCache createTemporaryIndex(ObjectId headId, DirCache index,
|
|||
// 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…
Reference in New Issue