Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java31
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);
}

Back to the top