Class GitHook<T>

  • Type Parameters:
    T - the return type which is expected from call()
    All Implemented Interfaces:
    java.util.concurrent.Callable<T>
    Direct Known Subclasses:
    CommitMsgHook, PostCommitHook, PreCommitHook, PrePushHook

    public abstract class GitHook<T>
    extends java.lang.Object
    implements java.util.concurrent.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:
    Git Hooks on the git-scm official site
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.io.OutputStream errorStream
      The error stream to be used by the hook.
      private java.io.OutputStream outputStream
      The output stream to be used by the hook.
      private Repository repo  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected GitHook​(Repository repo, java.io.OutputStream outputStream)
      Constructor for GitHook.
      protected GitHook​(Repository repo, java.io.OutputStream outputStream, java.io.OutputStream errorStream)
      Constructor for GitHook
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract T call()
      protected void doRun()
      Runs the hook, without performing any validity checks.
      protected java.io.OutputStream getErrorStream()
      Get error stream
      abstract java.lang.String getHookName()
      Get name of the hook
      protected java.io.OutputStream getOutputStream()
      Get output stream
      protected java.lang.String[] getParameters()
      Override this method when needed to provide relevant parameters to the underlying hook script.
      protected Repository getRepository()
      Get the repository
      protected java.lang.String getStdinArgs()
      Override to provide relevant arguments via stdin to the underlying hook script.
      protected void handleError​(java.lang.String message, ProcessResult result)
      Process that the hook exited with an error.
      boolean isNativeHookPresent()
      Check whether a 'native' (i.e.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • outputStream

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

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

      • GitHook

        protected GitHook​(Repository repo,
                          java.io.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,
                          java.io.OutputStream outputStream,
                          java.io.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 Detail

      • getHookName

        public abstract java.lang.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 java.lang.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 java.lang.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 java.io.OutputStream getOutputStream()
        Get output stream
        Returns:
        The output stream the hook must use. Never null, System.out is returned by default.
      • getErrorStream

        protected java.io.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,
                             java.io.IOException
        Runs the hook, without performing any validity checks.
        Throws:
        AbortedByHookException - If the underlying hook script exited with non-zero.
        java.io.IOException - if an IO error occurred
      • handleError

        protected void handleError​(java.lang.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