diff options
Diffstat (limited to 'org.eclipse.jgit.pgm')
9 files changed, 11 insertions, 542 deletions
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF index a26e4b4663..e8ec5a20fd 100644 --- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF +++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF @@ -6,11 +6,9 @@ Bundle-Version: 3.0.0.qualifier Bundle-Vendor: %provider_name Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 -Import-Package: org.apache.commons.compress.archivers;version="[1.3,2.0)", - org.apache.commons.compress.archivers.tar;version="[1.3,2.0)", - org.apache.commons.compress.archivers.zip;version="[1.3,2.0)", - org.eclipse.jgit.api;version="[3.0.0,3.1.0)", +Import-Package: org.eclipse.jgit.api;version="[3.0.0,3.1.0)", org.eclipse.jgit.api.errors;version="[3.0.0,3.1.0)", + org.eclipse.jgit.archive;version="[3.0.0,3.1.0)", org.eclipse.jgit.awtui;version="[3.0.0,3.1.0)", org.eclipse.jgit.blame;version="[3.0.0,3.1.0)", org.eclipse.jgit.diff;version="[3.0.0,3.1.0)", @@ -34,10 +32,8 @@ Import-Package: org.apache.commons.compress.archivers;version="[1.3,2.0)", org.eclipse.jgit.util;version="[3.0.0,3.1.0)", org.eclipse.jgit.util.io;version="[3.0.0,3.1.0)", org.kohsuke.args4j;version="[2.0.12,2.1.0)", - org.kohsuke.args4j.spi;version="[2.0.12,2.1.0)", - org.osgi.framework;version="[4.0,5.0)" + org.kohsuke.args4j.spi;version="[2.0.12,2.1.0)" Bundle-ActivationPolicy: lazy -Bundle-Activator: org.eclipse.jgit.pgm.archive.FormatActivator Export-Package: org.eclipse.jgit.pgm;version="3.0.0"; uses:="org.eclipse.jgit.lib, org.eclipse.jgit.nls, diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml index fe1c3b2a15..40adc7a410 100644 --- a/org.eclipse.jgit.pgm/pom.xml +++ b/org.eclipse.jgit.pgm/pom.xml @@ -72,8 +72,9 @@ </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-compress</artifactId> + <groupId>org.eclipse.jgit</groupId> + <artifactId>org.eclipse.jgit.archive</artifactId> + <version>${project.version}</version> </dependency> <dependency> @@ -87,11 +88,6 @@ <artifactId>org.eclipse.jgit.ui</artifactId> <version>${project.version}</version> </dependency> - - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - </dependency> </dependencies> <profiles> diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties index 4a1548134f..48b61edb03 100644 --- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties +++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties @@ -7,8 +7,6 @@ N=N alreadyOnBranch=Already on ''{0}'' alreadyUpToDate=Already up-to-date. -archiveFormatAlreadyRegistered=Archive format already registered: {0} -archiveFormatAlreadyAbsent=Archive format already absent: {0} authorInfo=Author: {0} <{1}> averageMSPerRead=average {0} ms/read branchAlreadyExists=A branch named ''{0}'' already exists. @@ -48,7 +46,6 @@ deletedRemoteBranch=Deleted remote branch {0} doesNotExist={0} does not exist dontOverwriteLocalChanges=error: Your local changes to the following file would be overwritten by merge: everythingUpToDate=Everything up-to-date -exceptionCaughtDuringExecutionOfArchiveCommand=Exception caught during execution of archive command expectedNumberOfbytes=Expected {0} bytes. exporting=Exporting {0} failedToCommitIndex=failed to commit index @@ -175,7 +172,6 @@ tooManyRefsGiven=Too many refs given unknownIoErrorStdout=An unknown I/O error occurred on standard output unknownMergeStrategy=unknown merge strategy {0} specified unmergedPaths=Unmerged paths: -unsupportedArchiveFormat=Unknown archive format ''{0}'' unsupportedOperation=Unsupported operation: {0} untrackedFiles=Untracked files: updating=Updating {0}..{1} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java index 06f6f40f9c..0513fb2e24 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java @@ -43,12 +43,13 @@ package org.eclipse.jgit.pgm; +import org.eclipse.jgit.api.ArchiveCommand; +import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.archive.TarFormat; +import org.eclipse.jgit.archive.ZipFormat; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.pgm.TextBuiltin; -import org.eclipse.jgit.pgm.archive.ArchiveCommand; -import org.eclipse.jgit.pgm.archive.TarFormat; -import org.eclipse.jgit.pgm.archive.ZipFormat; import org.eclipse.jgit.pgm.internal.CLIText; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; @@ -71,7 +72,7 @@ class Archive extends TextBuiltin { if (tree == null) throw die(CLIText.get().treeIsRequired); - final ArchiveCommand cmd = new ArchiveCommand(db); + final ArchiveCommand cmd = new Git(db).archive(); try { cmd.setTree(tree) .setFormat(format) diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/ArchiveCommand.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/ArchiveCommand.java deleted file mode 100644 index 5e572373fc..0000000000 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/ArchiveCommand.java +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.eclipse.jgit.pgm.archive; - -import java.io.Closeable; -import java.io.IOException; -import java.io.OutputStream; -import java.text.MessageFormat; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.GitCommand; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.api.errors.JGitInternalException; -import org.eclipse.jgit.lib.FileMode; -import org.eclipse.jgit.lib.MutableObjectId; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.ObjectLoader; -import org.eclipse.jgit.lib.ObjectReader; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.pgm.internal.CLIText; -import org.eclipse.jgit.revwalk.RevWalk; -import org.eclipse.jgit.treewalk.TreeWalk; - -/** - * Create an archive of files from a named tree. - * <p> - * Examples (<code>git</code> is a {@link Git} instance): - * <p> - * Create a tarball from HEAD: - * - * <pre> - * ArchiveCommand.registerFormat("tar", new TarFormat()); - * cmd = new ArchiveCommand(git.getRepository()); - * try { - * cmd.setTree(db.resolve("HEAD")) - * .setOutputStream(out).call(); - * } finally { - * cmd.release(); - * ArchiveCommand.unregisterFormat("tar"); - * } - * </pre> - * <p> - * Create a ZIP file from master: - * - * <pre> - * ArchiveCommand.registerFormat("zip", new ZipFormat()); - * try { - * cmd.setTree(db.resolve("master")) - * .setFormat("zip") - * .setOutputStream(out).call(); - * } finally { - * cmd.release(); - * ArchiveCommand.unregisterFormat("zip"); - * } - * </pre> - * - * @see <a href="http://git-htmldocs.googlecode.com/git/git-archive.html" - * >Git documentation about archive</a> - * - * @since 3.0 - */ -public class ArchiveCommand extends GitCommand<OutputStream> { - /** - * Archival format. - * - * Usage: - * Repository repo = git.getRepository(); - * T out = format.createArchiveOutputStream(System.out); - * try { - * for (...) { - * format.putEntry(out, path, mode, repo.open(objectId)); - * } - * } finally { - * out.close(); - * } - */ - public static interface Format<T extends Closeable> { - T createArchiveOutputStream(OutputStream s); - void putEntry(T out, String path, FileMode mode, - ObjectLoader loader) throws IOException; - } - - /** - * Signals an attempt to use an archival format that ArchiveCommand - * doesn't know about (for example due to a typo). - */ - public static class UnsupportedFormatException extends GitAPIException { - private static final long serialVersionUID = 1L; - - private final String format; - - /** - * @param format the problematic format name - */ - public UnsupportedFormatException(String format) { - super(MessageFormat.format(CLIText.get().unsupportedArchiveFormat, format)); - this.format = format; - } - - /** - * @return the problematic format name - */ - public String getFormat() { - return format; - } - } - - /** - * Available archival formats (corresponding to values for - * the --format= option) - */ - private static final ConcurrentMap<String, Format<?>> formats = - new ConcurrentHashMap<String, Format<?>>(); - - /** - * Adds support for an additional archival format. To avoid - * unnecessary dependencies, ArchiveCommand does not have support - * for any formats built in; use this function to add them. - * - * OSGi plugins providing formats should call this function at - * bundle activation time. - * - * @param name name of a format (e.g., "tar" or "zip"). - * @param fmt archiver for that format - * @throws JGitInternalException - * An archival format with that name was already registered. - */ - public static void registerFormat(String name, Format<?> fmt) { - if (formats.putIfAbsent(name, fmt) != null) - throw new JGitInternalException(MessageFormat.format( - CLIText.get().archiveFormatAlreadyRegistered, - name)); - } - - /** - * Removes support for an archival format so its Format can be - * garbage collected. - * - * @param name name of format (e.g., "tar" or "zip"). - * @throws JGitInternalException - * No such archival format was registered. - */ - public static void unregisterFormat(String name) { - if (formats.remove(name) == null) - throw new JGitInternalException(MessageFormat.format( - CLIText.get().archiveFormatAlreadyAbsent, - name)); - } - - private static Format<?> lookupFormat(String formatName) throws UnsupportedFormatException { - Format<?> fmt = formats.get(formatName); - if (fmt == null) - throw new UnsupportedFormatException(formatName); - return fmt; - } - - private OutputStream out; - private TreeWalk walk; - private String format = "tar"; - - /** - * @param repo - */ - public ArchiveCommand(Repository repo) { - super(repo); - walk = new TreeWalk(repo); - } - - /** - * Release any resources used by the internal ObjectReader. - * <p> - * This does not close the output stream set with setOutputStream, which - * belongs to the caller. - */ - public void release() { - walk.release(); - } - - private <T extends Closeable> - OutputStream writeArchive(Format<T> fmt) throws GitAPIException { - final MutableObjectId idBuf = new MutableObjectId(); - final T outa = fmt.createArchiveOutputStream(out); - final ObjectReader reader = walk.getObjectReader(); - - try { - try { - walk.setRecursive(true); - while (walk.next()) { - final String name = walk.getPathString(); - final FileMode mode = walk.getFileMode(0); - - if (mode == FileMode.TREE) - // ZIP entries for directories are optional. - // Leave them out, mimicking "git archive". - continue; - - walk.getObjectId(idBuf, 0); - fmt.putEntry(outa, name, mode, reader.open(idBuf)); - } - } finally { - outa.close(); - } - } catch (IOException e) { - // TODO(jrn): Throw finer-grained errors. - throw new JGitInternalException( - CLIText.get().exceptionCaughtDuringExecutionOfArchiveCommand, e); - } - - return out; - } - - /** - * @return the stream to which the archive has been written - */ - @Override - public OutputStream call() throws GitAPIException { - final Format<?> fmt = lookupFormat(format); - return writeArchive(fmt); - } - - /** - * @param tree - * the tag, commit, or tree object to produce an archive for - * @return this - * @throws IOException - */ - public ArchiveCommand setTree(ObjectId tree) throws IOException { - final RevWalk rw = new RevWalk(walk.getObjectReader()); - walk.reset(rw.parseTree(tree)); - return this; - } - - /** - * @param out - * the stream to which to write the archive - * @return this - */ - public ArchiveCommand setOutputStream(OutputStream out) { - this.out = out; - return this; - } - - /** - * @param fmt - * archive format (e.g., "tar" or "zip") - * @return this - */ - public ArchiveCommand setFormat(String fmt) { - this.format = fmt; - return this; - } -} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/FormatActivator.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/FormatActivator.java deleted file mode 100644 index 4889faf338..0000000000 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/FormatActivator.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2013 Google Inc. - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.eclipse.jgit.pgm.archive; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -public class FormatActivator implements BundleActivator { - public void start(BundleContext context) throws Exception { - ArchiveCommand.registerFormat("tar", new TarFormat()); - ArchiveCommand.registerFormat("zip", new ZipFormat()); - } - - public void stop(BundleContext context) throws Exception { - ArchiveCommand.unregisterFormat("zip"); - ArchiveCommand.unregisterFormat("tar"); - } -} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/TarFormat.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/TarFormat.java deleted file mode 100644 index 55f6ca942e..0000000000 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/TarFormat.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.eclipse.jgit.pgm.archive; - -import java.io.IOException; -import java.io.OutputStream; - -import org.apache.commons.compress.archivers.ArchiveOutputStream; -import org.apache.commons.compress.archivers.tar.TarArchiveEntry; -import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; -import org.apache.commons.compress.archivers.tar.TarConstants; -import org.eclipse.jgit.lib.FileMode; -import org.eclipse.jgit.lib.ObjectLoader; - -public class TarFormat implements ArchiveCommand.Format<ArchiveOutputStream> { - public ArchiveOutputStream createArchiveOutputStream(OutputStream s) { - return new TarArchiveOutputStream(s); - } - - public void putEntry(ArchiveOutputStream out, - String path, FileMode mode, ObjectLoader loader) - throws IOException { - if (mode == FileMode.SYMLINK) { - final TarArchiveEntry entry = new TarArchiveEntry( - path, TarConstants.LF_SYMLINK); - entry.setLinkName(new String( - loader.getCachedBytes(100), "UTF-8")); //$NON-NLS-1$ - out.putArchiveEntry(entry); - out.closeArchiveEntry(); - return; - } - - final TarArchiveEntry entry = new TarArchiveEntry(path); - if (mode == FileMode.REGULAR_FILE || - mode == FileMode.EXECUTABLE_FILE) { - entry.setMode(mode.getBits()); - } else { - // TODO(jrn): Let the caller know the tree contained - // an entry with unsupported mode (e.g., a submodule). - } - entry.setSize(loader.getSize()); - out.putArchiveEntry(entry); - loader.copyTo(out); - out.closeArchiveEntry(); - } -} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/ZipFormat.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/ZipFormat.java deleted file mode 100644 index a23cc9f38a..0000000000 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/archive/ZipFormat.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2012 Google Inc. - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.eclipse.jgit.pgm.archive; - -import java.io.IOException; -import java.io.OutputStream; - -import org.apache.commons.compress.archivers.ArchiveOutputStream; -import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; -import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; -import org.eclipse.jgit.lib.FileMode; -import org.eclipse.jgit.lib.ObjectLoader; - -public class ZipFormat implements ArchiveCommand.Format<ArchiveOutputStream> { - public ArchiveOutputStream createArchiveOutputStream(OutputStream s) { - return new ZipArchiveOutputStream(s); - } - - public void putEntry(ArchiveOutputStream out, - String path, FileMode mode, ObjectLoader loader) - throws IOException { - final ZipArchiveEntry entry = new ZipArchiveEntry(path); - - if (mode == FileMode.REGULAR_FILE) { - // ok - } else if (mode == FileMode.EXECUTABLE_FILE - || mode == FileMode.SYMLINK) { - entry.setUnixMode(mode.getBits()); - } else { - // TODO(jrn): Let the caller know the tree contained - // an entry with unsupported mode (e.g., a submodule). - } - entry.setSize(loader.getSize()); - out.putArchiveEntry(entry); - loader.copyTo(out); - out.closeArchiveEntry(); - } -} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java index b5580bf34f..a8bf3d8cc3 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java @@ -76,8 +76,6 @@ public class CLIText extends TranslationBundle { // @formatter:off /***/ public String alreadyOnBranch; /***/ public String alreadyUpToDate; - /***/ public String archiveFormatAlreadyRegistered; - /***/ public String archiveFormatAlreadyAbsent; /***/ public String authorInfo; /***/ public String averageMSPerRead; /***/ public String branchAlreadyExists; @@ -117,7 +115,6 @@ public class CLIText extends TranslationBundle { /***/ public String doesNotExist; /***/ public String dontOverwriteLocalChanges; /***/ public String everythingUpToDate; - /***/ public String exceptionCaughtDuringExecutionOfArchiveCommand; /***/ public String expectedNumberOfbytes; /***/ public String exporting; /***/ public String failedToCommitIndex; @@ -238,7 +235,6 @@ public class CLIText extends TranslationBundle { /***/ public char[] unknownIoErrorStdout; /***/ public String unknownMergeStrategy; /***/ public String unmergedPaths; - /***/ public String unsupportedArchiveFormat; /***/ public String unsupportedOperation; /***/ public String untrackedFiles; /***/ public String updating; |