Mercurial > hg > mercurial
changeset 814:44bf3a609d67
use BufferedInputStream, added TODO
author | eugene.petrenko@jetbrains.com |
---|---|
date | Fri, 30 May 2014 10:51:57 +0200 |
parents | 1dadfa948844 |
children | f77739de2133 |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java |
diffstat | 1 files changed, 15 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Fri May 30 10:48:43 2014 +0200 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Fri May 30 10:51:57 2014 +0200 @@ -450,25 +450,29 @@ @NotNull final File archive, @NotNull final CheckoutRules checkoutRules, @NotNull final FileFilter filter) throws IOException { - FileInputStream fis = new FileInputStream(archive); + InputStream fis = null; ArchiveInputStream is = null; try { + fis = new BufferedInputStream(new FileInputStream(archive)); is = new TarArchiveInputStream(fis); - ArchiveEntry entry = null; + + ArchiveEntry entry; while ((entry = is.getNextEntry()) != null) { + if (entry.isDirectory()) continue; + String fileName = entry.getName(); - if (fileName.startsWith("arch/")) - fileName = fileName.substring(5); - if (!filter.accept(new File(fileName))) - continue; - String mappedFile = checkoutRules.map(fileName); - if (!StringUtil.isEmpty(mappedFile)) + //TODO: does it work if I have arch/ in my repo? + if (fileName.startsWith("arch/")) fileName = fileName.substring(5); + + if (!filter.accept(new File(fileName))) continue; + + final String mappedFile = checkoutRules.map(fileName); + if (!StringUtil.isEmpty(mappedFile)) { builder.createBinaryFile(new File(mappedFile), null, is, entry.getSize()); + } } } finally { - fis.close(); - if (is != null) - is.close(); + FileUtil.closeAll(is, fis); } }