public class ArchiveCommand extends GitCommand<OutputStream>
Examples (git
is a Git
instance):
Create a tarball from HEAD:
ArchiveCommand.registerFormat("tar", new TarFormat()); try { git.archive().setTree(db.resolve("HEAD")).setOutputStream(out).call(); } finally { ArchiveCommand.unregisterFormat("tar"); }
Create a ZIP file from master:
ArchiveCommand.registerFormat("zip", new ZipFormat()); try { git.archive(). .setTree(db.resolve("master")) .setFormat("zip") .setOutputStream(out) .call(); } finally { ArchiveCommand.unregisterFormat("zip"); }
Modifier and Type | Class and Description |
---|---|
static interface |
ArchiveCommand.Format<T extends Closeable>
Archival format.
|
static class |
ArchiveCommand.UnsupportedFormatException
Signals an attempt to use an archival format that ArchiveCommand
doesn't know about (for example due to a typo).
|
repo
Constructor and Description |
---|
ArchiveCommand(Repository repo)
Constructor for ArchiveCommand
|
Modifier and Type | Method and Description |
---|---|
OutputStream |
call() |
static void |
registerFormat(String name,
ArchiveCommand.Format<?> fmt)
Adds support for an additional archival format.
|
ArchiveCommand |
setFilename(String filename)
Set the intended filename for the produced archive.
|
ArchiveCommand |
setFormat(String fmt)
Set archive format
|
ArchiveCommand |
setFormatOptions(Map<String,Object> options)
Set archive format options
|
ArchiveCommand |
setOutputStream(OutputStream out)
Set output stream
|
ArchiveCommand |
setPaths(String... paths)
Set an optional parameter path.
|
ArchiveCommand |
setPrefix(String prefix)
Set string prefixed to filenames in archive
|
ArchiveCommand |
setTree(ObjectId tree)
Set the tag, commit, or tree object to produce an archive for
|
static void |
unregisterFormat(String name)
Marks support for an archival format as no longer needed so its
Format can be garbage collected if no one else is using it either.
|
checkCallable, getRepository, setCallable
public ArchiveCommand(Repository repo)
repo
- the Repository
public static void registerFormat(String name, ArchiveCommand.Format<?> fmt)
OSGi plugins providing formats should call this function at bundle activation time.
It is okay to register the same archive format with the same name multiple times, but don't forget to unregister it that same number of times, too.
Registering multiple formats with different names and the same or overlapping suffixes results in undefined behavior. TODO: check that suffixes don't overlap.
name
- name of a format (e.g., "tar" or "zip").fmt
- archiver for that formatJGitInternalException
- A different archival format with that name was
already registered.public static void unregisterFormat(String name)
In other words, this decrements the reference count for an archival format. If the reference count becomes zero, removes support for that format.
name
- name of format (e.g., "tar" or "zip").JGitInternalException
- No such archival format was registered.public OutputStream call() throws GitAPIException
Execute the command
call
in interface Callable<OutputStream>
call
in class GitCommand<OutputStream>
GitAPIException
public ArchiveCommand setTree(ObjectId tree)
tree
- the tag, commit, or tree object to produce an archive forpublic ArchiveCommand setPrefix(String prefix)
prefix
- string prefixed to filenames in archive (e.g., "master/").
null means to not use any leading prefix.public ArchiveCommand setFilename(String filename)
setFormat(String)
.filename
- intended filename for the archivepublic ArchiveCommand setOutputStream(OutputStream out)
out
- the stream to which to write the archivepublic ArchiveCommand setFormat(String fmt)
fmt
- archive format (e.g., "tar" or "zip"). null means to choose
automatically based on the archive filename.public ArchiveCommand setFormatOptions(Map<String,Object> options)
options
- archive format options (e.g., level=9 for zip compression).public ArchiveCommand setPaths(String... paths)
paths
- file names (e.g file1.c
) or directory names (e.g.
dir
to add dir/file1
and
dir/file2
) can also be given to add all files in
the directory, recursively. Fileglobs (e.g. *.c) are not yet
supported.Copyright © 2018 Eclipse JGit Project. All rights reserved.