diff options
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java index b748d00a77..60985e7c28 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java @@ -45,6 +45,7 @@ package org.eclipse.jgit.transport; import java.io.IOException; +import java.io.OutputStream; import java.text.MessageFormat; import java.util.Collection; import java.util.HashSet; @@ -138,8 +139,17 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen public void push(final ProgressMonitor monitor, final Map<String, RemoteRefUpdate> refUpdates) throws TransportException { + push(monitor, refUpdates, null); + } + + /** + * @since 3.0 + */ + public void push(final ProgressMonitor monitor, + final Map<String, RemoteRefUpdate> refUpdates, OutputStream outputStream) + throws TransportException { markStartedOperation(); - doPush(monitor, refUpdates); + doPush(monitor, refUpdates, outputStream); } @Override @@ -172,14 +182,17 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen * progress monitor to receive status updates. * @param refUpdates * update commands to be applied to the remote repository. + * @param outputStream + * output stream to write sideband messages to * @throws TransportException * if any exception occurs. + * @since 3.0 */ protected void doPush(final ProgressMonitor monitor, - final Map<String, RemoteRefUpdate> refUpdates) - throws TransportException { + final Map<String, RemoteRefUpdate> refUpdates, + OutputStream outputStream) throws TransportException { try { - writeCommands(refUpdates.values(), monitor); + writeCommands(refUpdates.values(), monitor, outputStream); if (writePack) writePack(refUpdates, monitor); if (sentCommand) { @@ -208,8 +221,8 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen } private void writeCommands(final Collection<RemoteRefUpdate> refUpdates, - final ProgressMonitor monitor) throws IOException { - final String capabilities = enableCapabilities(monitor); + final ProgressMonitor monitor, OutputStream outputStream) throws IOException { + final String capabilities = enableCapabilities(monitor, outputStream); for (final RemoteRefUpdate rru : refUpdates) { if (!capableDeleteRefs && rru.isDelete()) { rru.setStatus(Status.REJECTED_NODELETE); @@ -242,7 +255,8 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen outNeedsEnd = false; } - private String enableCapabilities(final ProgressMonitor monitor) { + private String enableCapabilities(final ProgressMonitor monitor, + OutputStream outputStream) { final StringBuilder line = new StringBuilder(); capableReport = wantCapability(line, CAPABILITY_REPORT_STATUS); capableDeleteRefs = wantCapability(line, CAPABILITY_DELETE_REFS); @@ -250,7 +264,8 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen capableSideBand = wantCapability(line, CAPABILITY_SIDE_BAND_64K); if (capableSideBand) { - in = new SideBandInputStream(in, monitor, getMessageWriter()); + in = new SideBandInputStream(in, monitor, getMessageWriter(), + outputStream); pckIn = new PacketLineIn(in); } |