Class GitHook<T>

java.lang.Object
org.eclipse.jgit.hooks.GitHook<T>
Type Parameters:
T - the return type which is expected from call()
All Implemented Interfaces:
Callable<T>
Direct Known Subclasses:
CommitMsgHook, PostCommitHook, PreCommitHook, PrePushHook

public abstract class GitHook<T> extends Object implements Callable<T>
Git can fire off custom scripts when certain important actions occur. These custom scripts are called "hooks". There are two groups of hooks: client-side (that run on local operations such as committing and merging), and server-side (that run on network operations such as receiving pushed commits). This is the abstract super-class of the different hook implementations in JGit.
Since:
5.11
See Also:
  • Field Details

    • repo

      private final Repository repo
    • outputStream

      private final OutputStream outputStream
      The output stream to be used by the hook.
    • errorStream

      private final OutputStream errorStream
      The error stream to be used by the hook.
  • Constructor Details

    • GitHook

      protected GitHook(Repository repo, OutputStream outputStream)
      Constructor for GitHook.

      This constructor will use stderr for the error stream.

      Parameters:
      repo - a Repository object.
      outputStream - The output stream the hook must use. null is allowed, in which case the hook will use System.out.
    • GitHook

      protected GitHook(Repository repo, OutputStream outputStream, OutputStream errorStream)
      Constructor for GitHook
      Parameters:
      repo - a Repository object.
      outputStream - The output stream the hook must use. null is allowed, in which case the hook will use System.out.
      errorStream - The error stream the hook must use. null is allowed, in which case the hook will use System.err.
  • Method Details

    • call

      public abstract T call() throws IOException, AbortedByHookException

      Run the hook.

      Specified by:
      call in interface Callable<T>
      Throws:
      IOException
      AbortedByHookException
    • getHookName

      public abstract String getHookName()
      Get name of the hook
      Returns:
      The name of the hook, which must not be null.
    • getRepository

      protected Repository getRepository()
      Get the repository
      Returns:
      The repository.
    • getParameters

      protected String[] getParameters()
      Override this method when needed to provide relevant parameters to the underlying hook script. The default implementation returns an empty array.
      Returns:
      The parameters the hook receives.
    • getStdinArgs

      protected String getStdinArgs()
      Override to provide relevant arguments via stdin to the underlying hook script. The default implementation returns null.
      Returns:
      The parameters the hook receives.
    • getOutputStream

      protected OutputStream getOutputStream()
      Get output stream
      Returns:
      The output stream the hook must use. Never null, System.out is returned by default.
    • getErrorStream

      protected OutputStream getErrorStream()
      Get error stream
      Returns:
      The error stream the hook must use. Never null, System.err is returned by default.
    • doRun

      protected void doRun() throws AbortedByHookException, IOException
      Runs the hook, without performing any validity checks.
      Throws:
      AbortedByHookException - If the underlying hook script exited with non-zero.
      IOException - if an IO error occurred
    • handleError

      protected void handleError(String message, ProcessResult result) throws AbortedByHookException
      Process that the hook exited with an error. This default implementation throws an AbortedByHookException. Hooks which need a different behavior can overwrite this method.
      Parameters:
      message - error message
      result - The process result of the hook
      Throws:
      AbortedByHookException - When the hook should be aborted
      Since:
      5.11
    • isNativeHookPresent

      public boolean isNativeHookPresent()
      Check whether a 'native' (i.e. script) hook is installed in the repository.
      Returns:
      whether a native hook script is installed in the repository.
      Since:
      4.11