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) |
Modifier and Type | Method and Description |
---|---|
OutputStream |
call()
Executes the command
|
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) |
ArchiveCommand |
setFormatOptions(Map<String,Object> options) |
ArchiveCommand |
setOutputStream(OutputStream out) |
ArchiveCommand |
setPaths(String... paths)
Set an optional parameter path.
|
ArchiveCommand |
setPrefix(String prefix) |
ArchiveCommand |
setTree(ObjectId tree) |
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
- 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
GitCommand
call
in interface Callable<OutputStream>
call
in class GitCommand<OutputStream>
GitAPIException
- or subclass thereof when an error occurspublic 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 © 2017 Eclipse JGit Project. All rights reserved.