Browse Source

Do not add ignored files in Add command

Signed-off-by: Stefan Lay <stefan.lay@sap.com>
stable-0.9
Stefan Lay 15 years ago
parent
commit
aa86cfc339
  1. 28
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java
  2. 8
      org.eclipse.jgit/src/org/eclipse/jgit/api/AddCommand.java

28
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java

@ -310,6 +310,34 @@ public class AddCommandTest extends RepositoryTestCase {
assertEquals(0, dc.getEntry("sub/b.txt").getStage());
}
public void testAddIgnoredFile() throws Exception {
new File(db.getWorkDir(), "sub").mkdir();
File file = new File(db.getWorkDir(), "sub/a.txt");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.print("content");
writer.close();
File ignoreFile = new File(db.getWorkDir(), ".gitignore");
ignoreFile.createNewFile();
writer = new PrintWriter(ignoreFile);
writer.print("sub/b.txt");
writer.close();
File file2 = new File(db.getWorkDir(), "sub/b.txt");
file2.createNewFile();
writer = new PrintWriter(file2);
writer.print("content b");
writer.close();
Git git = new Git(db);
DirCache dc = git.add().addFilepattern("sub").call();
assertEquals("sub/a.txt", dc.getEntry("sub/a.txt").getPathString());
assertNull(dc.getEntry("sub/b.txt"));
assertNotNull(dc.getEntry("sub/a.txt").getObjectId());
assertEquals(0, dc.getEntry("sub/a.txt").getStage());
}
private DirCacheEntry addEntryToBuilder(String path, File file,
ObjectWriter ow, DirCacheBuilder builder, int stage)
throws IOException {

8
org.eclipse.jgit/src/org/eclipse/jgit/api/AddCommand.java

@ -130,12 +130,16 @@ public class AddCommand extends GitCommand<DirCache> {
String path = tw.getPathString();
final File file = new File(repo.getWorkDir(), path);
FileTreeIterator f = tw.getTree(1, FileTreeIterator.class);
if (tw.getTree(0, DirCacheIterator.class) == null &&
f != null && f.isEntryIgnored()) {
// file is not in index but is ignored, do nothing
}
// In case of an existing merge conflict the
// DirCacheBuildIterator iterates over all stages of
// this path, we however want to add only one
// new DirCacheEntry per path.
if (!(path.equals(lastAddedFile))) {
FileTreeIterator f = tw.getTree(1, FileTreeIterator.class);
else if (!(path.equals(lastAddedFile))) {
if (f != null) { // the file exists
DirCacheEntry entry = new DirCacheEntry(path);
entry.setLength((int)f.getEntryLength());

Loading…
Cancel
Save