]> source.dussan.org Git - jgit.git/commitdiff
Allow for filepattern "." in AddCommand 65/1165/1
authorStefan Lay <stefan.lay@sap.com>
Thu, 22 Jul 2010 12:27:35 +0000 (14:27 +0200)
committerStefan Lay <stefan.lay@sap.com>
Thu, 22 Jul 2010 12:27:35 +0000 (14:27 +0200)
Enable adding on repository root level.

Change-Id: I415b10dc74cc9435578424d9f106c972fd703055
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java
org.eclipse.jgit/src/org/eclipse/jgit/api/AddCommand.java

index 00e39ebe3861d4f49adfecf53ce0ea5e036623c4..ab011807cb2ad5a8f8ae8a01147aaabf17d45cb1 100644 (file)
@@ -338,6 +338,26 @@ public class AddCommandTest extends RepositoryTestCase {
                assertEquals(0, dc.getEntry("sub/a.txt").getStage());
        }
 
+       public void testAddWholeRepo() 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 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(".").call();
+               assertEquals("sub/a.txt", dc.getEntry("sub/a.txt").getPathString());
+               assertEquals("sub/b.txt", dc.getEntry("sub/b.txt").getPathString());
+       }
+
        private DirCacheEntry addEntryToBuilder(String path, File file,
                        ObjectWriter ow, DirCacheBuilder builder, int stage)
                        throws IOException {
index 50db1ffc146368d74c1915ec1ef04f394e23dbaf..8dbbb4063f9815021f7cfc1d9a583571f6a40b56 100644 (file)
@@ -109,6 +109,9 @@ public class AddCommand extends GitCommand<DirCache> {
                        throw new NoFilepatternException(JGitText.get().atLeastOnePatternIsRequired);
                checkCallable();
                DirCache dc = null;
+               boolean addAll = false;
+               if (filepatterns.contains("."))
+                       addAll = true;
 
                try {
                        dc = DirCache.lock(repo);
@@ -122,7 +125,8 @@ public class AddCommand extends GitCommand<DirCache> {
                        FileTreeIterator fileTreeIterator = new FileTreeIterator(repo);
                        tw.addTree(fileTreeIterator);
                        tw.setRecursive(true);
-                       tw.setFilter(PathFilterGroup.createFromStrings(filepatterns));
+                       if (!addAll)
+                               tw.setFilter(PathFilterGroup.createFromStrings(filepatterns));
 
                        String lastAddedFile = null;