[RFC] archive: Switch to commons-compress as ZIP archiver
The Apache Commons Compress library provides a similar interface to java.util.zip with some features not found in java.util.zip, including support for inclusion of metadata (file mode and symlink targets) and support for multiple file formats (zip, .tar.xz, etc). Use it, in preparation for making use of these features. No functional change intended yet. A previous version of this patch used plexus-archiver. That is a heavier-weight dependency and offers a less convenient interface. Thanks to James Moger and Chris Aniszczyk for advice. Change-Id: Id01146950bb9c18dae0169311e3cde2c3bfa675e
This commit is contained in:
parent
55e8f2a433
commit
1547eaf7c5
|
@ -6,7 +6,8 @@ Bundle-Version: 2.2.0.qualifier
|
||||||
Bundle-Vendor: %provider_name
|
Bundle-Vendor: %provider_name
|
||||||
Bundle-Localization: plugin
|
Bundle-Localization: plugin
|
||||||
Bundle-RequiredExecutionEnvironment: J2SE-1.5
|
Bundle-RequiredExecutionEnvironment: J2SE-1.5
|
||||||
Import-Package: org.eclipse.jgit.api;version="[2.2.0,2.3.0)",
|
Import-Package: org.apache.commons.compress.archivers.zip;version="[1.3,2.0)",
|
||||||
|
org.eclipse.jgit.api;version="[2.2.0,2.3.0)",
|
||||||
org.eclipse.jgit.api.errors;version="[2.2.0,2.3.0)",
|
org.eclipse.jgit.api.errors;version="[2.2.0,2.3.0)",
|
||||||
org.eclipse.jgit.awtui;version="[2.2.0,2.3.0)",
|
org.eclipse.jgit.awtui;version="[2.2.0,2.3.0)",
|
||||||
org.eclipse.jgit.blame;version="[2.2.0,2.3.0)",
|
org.eclipse.jgit.blame;version="[2.2.0,2.3.0)",
|
||||||
|
|
|
@ -71,6 +71,11 @@
|
||||||
<artifactId>args4j</artifactId>
|
<artifactId>args4j</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-compress</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.eclipse.jgit</groupId>
|
<groupId>org.eclipse.jgit</groupId>
|
||||||
<artifactId>org.eclipse.jgit</artifactId>
|
<artifactId>org.eclipse.jgit</artifactId>
|
||||||
|
|
|
@ -46,9 +46,9 @@
|
||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
import java.lang.System;
|
import java.lang.System;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
|
||||||
|
|
||||||
|
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.FileMode;
|
||||||
import org.eclipse.jgit.lib.MutableObjectId;
|
import org.eclipse.jgit.lib.MutableObjectId;
|
||||||
import org.eclipse.jgit.lib.ObjectLoader;
|
import org.eclipse.jgit.lib.ObjectLoader;
|
||||||
|
@ -69,7 +69,7 @@ protected void run() throws Exception {
|
||||||
final TreeWalk walk = new TreeWalk(db);
|
final TreeWalk walk = new TreeWalk(db);
|
||||||
final ObjectReader reader = walk.getObjectReader();
|
final ObjectReader reader = walk.getObjectReader();
|
||||||
final MutableObjectId idBuf = new MutableObjectId();
|
final MutableObjectId idBuf = new MutableObjectId();
|
||||||
final ZipOutputStream out = new ZipOutputStream(outs);
|
final ZipArchiveOutputStream out = new ZipArchiveOutputStream(outs);
|
||||||
|
|
||||||
if (tree == null)
|
if (tree == null)
|
||||||
throw die(CLIText.get().treeIsRequired);
|
throw die(CLIText.get().treeIsRequired);
|
||||||
|
@ -87,11 +87,12 @@ protected void run() throws Exception {
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
walk.getObjectId(idBuf, 0);
|
walk.getObjectId(idBuf, 0);
|
||||||
final ZipEntry entry = new ZipEntry(name);
|
final ZipArchiveEntry entry = new ZipArchiveEntry(name);
|
||||||
final ObjectLoader loader = reader.open(idBuf);
|
final ObjectLoader loader = reader.open(idBuf);
|
||||||
entry.setSize(loader.getSize());
|
entry.setSize(loader.getSize());
|
||||||
out.putNextEntry(entry);
|
out.putArchiveEntry(entry);
|
||||||
loader.copyTo(out);
|
loader.copyTo(out);
|
||||||
|
out.closeArchiveEntry();
|
||||||
|
|
||||||
if (mode != FileMode.REGULAR_FILE)
|
if (mode != FileMode.REGULAR_FILE)
|
||||||
System.err.println(MessageFormat.format( //
|
System.err.println(MessageFormat.format( //
|
||||||
|
|
7
pom.xml
7
pom.xml
|
@ -173,6 +173,7 @@
|
||||||
<jsch-version>0.1.44-1</jsch-version>
|
<jsch-version>0.1.44-1</jsch-version>
|
||||||
<junit-version>4.5</junit-version>
|
<junit-version>4.5</junit-version>
|
||||||
<args4j-version>2.0.12</args4j-version>
|
<args4j-version>2.0.12</args4j-version>
|
||||||
|
<commons-compress-version>1.3</commons-compress-version>
|
||||||
<servlet-api-version>2.5</servlet-api-version>
|
<servlet-api-version>2.5</servlet-api-version>
|
||||||
<jetty-version>7.6.0.v20120127</jetty-version>
|
<jetty-version>7.6.0.v20120127</jetty-version>
|
||||||
<clirr-version>2.4</clirr-version>
|
<clirr-version>2.4</clirr-version>
|
||||||
|
@ -415,6 +416,12 @@
|
||||||
<version>${servlet-api-version}</version>
|
<version>${servlet-api-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-compress</artifactId>
|
||||||
|
<version>${commons-compress-version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.eclipse.jetty</groupId>
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
<artifactId>jetty-servlet</artifactId>
|
<artifactId>jetty-servlet</artifactId>
|
||||||
|
|
Loading…
Reference in New Issue