Hi,

On Wed, 10 Jan 2018, Jonathan Nieder wrote:

> Phillip Wood wrote:
> 
> > From: Phillip Wood <phillip.w...@dunelm.org.uk>
> >
> > If the commit message does not need to be edited then create the
> > commit without forking 'git commit'. Taking the best time of ten runs
> > with a warm cache this reduces the time taken to cherry-pick 10
> > commits by 27% (from 282ms to 204ms), and the time taken by 'git
> > rebase --continue' to pick 10 commits by 45% (from 386ms to 212ms) on
> > my computer running linux. Some of greater saving for rebase is
> > because it no longer wastes time creating the commit summary just to
> > throw it away.
> 
> Neat!  Dmitry Torokhov (cc-ed) noticed[1] that this causes the
> prepare-commit-msg hook not to be invoked, which I think is
> unintentional.  Should we check for such a hook and take the slowpath
> when it is present?

We could also easily recreate the functionality:

        if (find_hook("pre-commit")) {
                struct argv_array hook_env = ARGV_ARRAY_INIT;

                argv_array_pushf(&hook_env, "GIT_INDEX_FILE=%s",
                        get_index_file());
                argv_array_push(&hook_env, "GIT_EDITOR=:");
                ret = run_hook_le(hook_env.argv, "pre-commit", NULL);
                argv_array_clear(&hook_env);
        }

(This assumes that the in-process try_to_commit() is only called if the
commit message is not to be edited interactively, which is currently the
case.)

Ciao,
Dscho

Reply via email to