public class BundleWriter extends Object
Bundles generated by this class can be later read in from a file URI using
the bundle transport, or from an application controlled buffer by the more
generic TransportBundleStream
.
Applications creating bundles need to call one or more include
calls to reflect which objects should be available as refs in the bundle for
the other side to fetch. At least one include is required to create a valid
bundle file, and duplicate names are not permitted.
Optional assume
calls can be made to declare commits which the
recipient must have in order to fetch from the bundle file. Objects reachable
from these assumed commits can be used as delta bases in order to reduce the
overall bundle size.
Constructor and Description |
---|
BundleWriter(Repository repo)
Create a writer for a bundle.
|
Modifier and Type | Method and Description |
---|---|
void |
assume(RevCommit c)
Assume a commit is available on the recipient's side.
|
void |
include(Ref r)
Include a single ref (a name/object pair) in the bundle.
|
void |
include(String name,
AnyObjectId id)
Include an object (and everything reachable from it) in the bundle.
|
BundleWriter |
setObjectCountCallback(ObjectCountCallback callback)
Set the
ObjectCountCallback . |
void |
setPackConfig(PackConfig pc)
Set the configuration used by the pack generator.
|
void |
writeBundle(ProgressMonitor monitor,
OutputStream os)
Generate and write the bundle to the output stream.
|
public BundleWriter(Repository repo)
repo
- repository where objects are stored.public void setPackConfig(PackConfig pc)
pc
- configuration controlling packing parameters. If null the
source repository's settings will be used.public void include(String name, AnyObjectId id)
name
- name the recipient can discover this object as from the
bundle's list of advertised refs . The name must be a valid
ref format and must not have already been included in this
bundle writer.id
- object to pack. Multiple refs may point to the same object.public void include(Ref r)
This is a utility function for:
include(r.getName(), r.getObjectId())
.
r
- the ref to include.public void assume(RevCommit c)
In order to fetch from a bundle the recipient must have any assumed commit. Each assumed commit is explicitly recorded in the bundle header to permit the recipient to validate it has these objects.
c
- the commit to assume being available. This commit should be
parsed and not disposed in order to maximize the amount of
debugging information available in the bundle stream.public void writeBundle(ProgressMonitor monitor, OutputStream os) throws IOException
This method can only be called once per BundleWriter instance.
monitor
- progress monitor to report bundle writing status to.os
- the stream the bundle is written to. The stream should be
buffered by the caller. The caller is responsible for closing
the stream.IOException
- an error occurred reading a local object's data to include in
the bundle, or writing compressed object data to the output
stream.WriteAbortedException
- the write operation is aborted by
ObjectCountCallback
.public BundleWriter setObjectCountCallback(ObjectCountCallback callback)
ObjectCountCallback
.
It should be set before calling
writeBundle(ProgressMonitor, OutputStream)
.
This callback will be passed on to
PackWriter.setObjectCountCallback(org.eclipse.jgit.transport.ObjectCountCallback)
.
callback
- the callback to setCopyright © 2015 Eclipse JGit Project. All rights reserved.