]> source.dussan.org Git - jgit.git/commitdiff
Fix ApplyCommand which doesn't work if patch adds empty file 72/144072/6
authorAnton Khodos <khodosanton@gmail.com>
Fri, 14 Jun 2019 15:16:15 +0000 (17:16 +0200)
committerMatthias Sohn <matthias.sohn@sap.com>
Mon, 19 Aug 2019 00:37:04 +0000 (02:37 +0200)
Bug: 548219
Change-Id: Ibb32132a38e54508a24489322da58ddfd80a1d9a
Signed-off-by: Anton Khodos <khodosanton@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A3.patch [new file with mode: 0644]
org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A3_PostImage [new file with mode: 0644]
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java
org.eclipse.jgit/src/org/eclipse/jgit/api/ApplyCommand.java

diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A3.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A3.patch
new file mode 100644 (file)
index 0000000..ac63d91
--- /dev/null
@@ -0,0 +1,3 @@
+diff --git a/A3 b/A3
+new file mode 100644
+index 0000000..de98044
\ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A3_PostImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A3_PostImage
new file mode 100644 (file)
index 0000000..e69de29
index 1dd329a9e74756bf49c1f0b745455740994c9a9e..714a54c90cca4ba403260dcd66f49b45de31b2b0 100644 (file)
@@ -110,6 +110,16 @@ public class ApplyCommandTest extends RepositoryTestCase {
                                b.getString(0, b.size(), false));
        }
 
+       @Test
+       public void testAddA3() throws Exception {
+               ApplyResult result = init("A3", false, true);
+               assertEquals(1, result.getUpdatedFiles().size());
+               assertEquals(new File(db.getWorkTree(), "A3"),
+                               result.getUpdatedFiles().get(0));
+               checkFile(new File(db.getWorkTree(), "A3"),
+                               b.getString(0, b.size(), false));
+       }
+
        @Test
        public void testAddA1Sub() throws Exception {
                ApplyResult result = init("A1_sub", false, false);
index c6f3c671a9722f2e8d9636272f533a4b51ea984b..38e544452338cf764eb2a2e0ba8f60e8a375c927 100644 (file)
@@ -279,9 +279,13 @@ public class ApplyCommand extends GitCommand<ApplyResult> {
        }
 
        private boolean isNoNewlineAtEndOfFile(FileHeader fh) {
-               HunkHeader lastHunk = fh.getHunks().get(fh.getHunks().size() - 1);
+               List<? extends HunkHeader> hunks = fh.getHunks();
+               if (hunks == null || hunks.isEmpty()) {
+                       return false;
+               }
+               HunkHeader lastHunk = hunks.get(hunks.size() - 1);
                RawText lhrt = new RawText(lastHunk.getBuffer());
-               return lhrt.getString(lhrt.size() - 1).equals(
-                               "\\ No newline at end of file"); //$NON-NLS-1$
+               return lhrt.getString(lhrt.size() - 1)
+                               .equals("\\ No newline at end of file"); //$NON-NLS-1$
        }
 }