Browse Source

ReceivePack: allow push options to be set

Some embeddings of JGit require creating a ReceivePack instance in
another process from the one that handled the network socket with the
client.  Similar to the PushCertificate add a setter to allow the
option list to be supplied.

Change-Id: I303a30e54942ad067c79251eff8b53329c406628
stable-4.5
Shawn Pearce 8 years ago
parent
commit
8e00a317b2
  1. 24
      org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java

24
org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java

@ -98,11 +98,6 @@ public class ReceivePack extends BaseReceivePack {
* @return an unmodifiable view of pushOptions, or null (if pushOptions is).
* @throws IllegalStateException
* if allowPushOptions has not been set to true.
* @throws RequestNotYetReadException
* if the client's request has not yet been read from the wire,
* so we do not know if they expect push options. Note that the
* client may have already written the request, it just has not
* been read.
* @since 4.5
*/
@Nullable
@ -112,7 +107,6 @@ public class ReceivePack extends BaseReceivePack {
// call doesn't make sense.
throw new IllegalStateException();
}
checkRequestWasRead();
if (!usePushOptions) {
// The client doesn't support push options. Return null to
// distinguish this from the case where the client declared support
@ -122,6 +116,24 @@ public class ReceivePack extends BaseReceivePack {
return Collections.unmodifiableList(pushOptions);
}
/**
* Set the push options supplied by the client.
* <p>
* Should only be called if reconstructing an instance without going through
* the normal {@link #recvCommands()} flow.
*
* @param options
* the list of options supplied by the client. The
* {@code ReceivePack} instance takes ownership of this list.
* Callers are encouraged to first create a copy if the list may
* be modified later.
* @since 4.5
*/
public void setPushOptions(@Nullable List<String> options) {
usePushOptions = options != null;
pushOptions = options;
}
/** @return the hook invoked before updates occur. */
public PreReceiveHook getPreReceiveHook() {
return preReceive;

Loading…
Cancel
Save