/* * Copyright (C) 2008, Google Inc. and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.transport; import java.util.Collection; /** * Hook invoked by {@link org.eclipse.jgit.transport.ReceivePack} before any * updates are executed. *
* The hook is called with any commands that are deemed valid after parsing them * from the client and applying the standard receive configuration options to * them: *
receive.denyDenyDeletes
receive.denyNonFastForwards
* As the hook is invoked prior to the commands being executed, the hook may * choose to block any command by setting its result status with * {@link org.eclipse.jgit.transport.ReceiveCommand#setResult(ReceiveCommand.Result)}. *
* The hook may also choose to perform the command itself (or merely pretend * that it has performed the command), by setting the result status to * {@link org.eclipse.jgit.transport.ReceiveCommand.Result#OK}. *
* Hooks should run quickly, as they block the caller thread and the client * process from completing. *
* Hooks may send optional messages back to the client via methods on
* {@link org.eclipse.jgit.transport.ReceivePack}. Implementors should be aware
* that not all network transports support this output, so some (or all)
* messages may simply be discarded. These messages should be advisory only.
*/
public interface PreReceiveHook {
/** A simple no-op hook. */
PreReceiveHook NULL = (final ReceivePack rp,
final Collection
* See the class description for how this method can impact execution.
*
* @param rp
* the process handling the current receive. Hooks may obtain
* details about the destination repository through this handle.
* @param commands
* unmodifiable set of valid commands still pending execution.
* May be the empty set.
*/
void onPreReceive(ReceivePack rp, Collection