/** * Checks whether the given hook is defined for the given repository, then * runs it with the given arguments. * <p> * The hook's standard output and error streams will be redirected to * <code>System.out</code> and <code>System.err</code> respectively. The * hook will have no stdin. * </p> * * @param repository * The repository for which a hook should be run. * @param hookName * The name of the hook to be executed. * @param args * Arguments to pass to this hook. Cannot be <code>null</code>, * but can be an empty array. * @return The ProcessResult describing this hook's execution. * @throws org.eclipse.jgit.api.errors.JGitInternalException * if we fail to run the hook somehow. Causes may include an * interrupted process or I/O errors. * @since 4.0 */ public ProcessResult runHookIfPresent(Repository repository, final String hookName, String[] args) throws JGitInternalException { return runHookIfPresent(repository, hookName, args, System.out, System.err, null); }
/** * Runs the hook, without performing any validity checks. * * @throws org.eclipse.jgit.api.errors.AbortedByHookException * If the underlying hook script exited with non-zero. */ protected void doRun() throws AbortedByHookException { final ByteArrayOutputStream errorByteArray = new ByteArrayOutputStream(); PrintStream hookErrRedirect = null; try { hookErrRedirect = new PrintStream(errorByteArray, false, UTF_8.name()); } catch (UnsupportedEncodingException e) { // UTF-8 is guaranteed to be available } ProcessResult result = FS.DETECTED.runHookIfPresent(getRepository(), getHookName(), getParameters(), getOutputStream(), hookErrRedirect, getStdinArgs()); if (result.isExecutedWithError()) { throw new AbortedByHookException( new String(errorByteArray.toByteArray(), UTF_8), getHookName(), result.getExitCode()); } }
/** * Checks whether the given hook is defined for the given repository, then * runs it with the given arguments. * <p> * The hook's standard output and error streams will be redirected to * <code>System.out</code> and <code>System.err</code> respectively. The * hook will have no stdin. * </p> * * @param repository * The repository for which a hook should be run. * @param hookName * The name of the hook to be executed. * @param args * Arguments to pass to this hook. Cannot be <code>null</code>, * but can be an empty array. * @return The ProcessResult describing this hook's execution. * @throws JGitInternalException * if we fail to run the hook somehow. Causes may include an * interrupted process or I/O errors. * @since 4.0 */ public ProcessResult runHookIfPresent(Repository repository, final String hookName, String[] args) throws JGitInternalException { return runHookIfPresent(repository, hookName, args, System.out, System.err, null); }
/** * Checks whether the given hook is defined for the given repository, then * runs it with the given arguments. * <p> * The hook's standard output and error streams will be redirected to * <code>System.out</code> and <code>System.err</code> respectively. The * hook will have no stdin. * </p> * * @param repository * The repository for which a hook should be run. * @param hookName * The name of the hook to be executed. * @param args * Arguments to pass to this hook. Cannot be <code>null</code>, * but can be an empty array. * @return The ProcessResult describing this hook's execution. * @throws org.eclipse.jgit.api.errors.JGitInternalException * if we fail to run the hook somehow. Causes may include an * interrupted process or I/O errors. * @since 4.0 */ public ProcessResult runHookIfPresent(Repository repository, final String hookName, String[] args) throws JGitInternalException { return runHookIfPresent(repository, hookName, args, System.out, System.err, null); }
/** * Runs the hook, without performing any validity checks. * * @throws org.eclipse.jgit.api.errors.AbortedByHookException * If the underlying hook script exited with non-zero. */ protected void doRun() throws AbortedByHookException { final ByteArrayOutputStream errorByteArray = new ByteArrayOutputStream(); PrintStream hookErrRedirect = null; try { hookErrRedirect = new PrintStream(errorByteArray, false, UTF_8.name()); } catch (UnsupportedEncodingException e) { // UTF-8 is guaranteed to be available } ProcessResult result = FS.DETECTED.runHookIfPresent(getRepository(), getHookName(), getParameters(), getOutputStream(), hookErrRedirect, getStdinArgs()); if (result.isExecutedWithError()) { throw new AbortedByHookException( new String(errorByteArray.toByteArray(), UTF_8), getHookName(), result.getExitCode()); } }
/** * Runs the hook, without performing any validity checks. * * @throws AbortedByHookException * If the underlying hook script exited with non-zero. */ protected void doRun() throws AbortedByHookException { final ByteArrayOutputStream errorByteArray = new ByteArrayOutputStream(); final PrintStream hookErrRedirect = new PrintStream(errorByteArray); ProcessResult result = FS.DETECTED.runHookIfPresent(getRepository(), getHookName(), getParameters(), getOutputStream(), hookErrRedirect, getStdinArgs()); if (result.isExecutedWithError()) { throw new AbortedByHookException(errorByteArray.toString(), getHookName(), result.getExitCode()); } }
private void postCommitHook(final JGitFileSystem fileSystem) { ProcessResult result = detectedFS.runHookIfPresent(fileSystem.getGit().getRepository(), "post-commit", new String[0]); if(result.getStatus().equals(ProcessResult.Status.OK)) { fileSystem.notifyPostCommit(result.getExitCode()); } }