Can you define "lately"? Is it a function of your git version, or is it a
function of the age of your repositories?
When talking about cherry-pick, the size of the history (unless the
repository has too many objects and badly packed) does not matter; the
operation is purely about your current state, the cherry-picked commit
itself, and the parent commit of the cherry-picked one.
Taking 5 minutes to cherry-pick a change to only two paths, one line
deletion each, is plain ridiculous, but if the tree state of cherry-picked
commit and the tree state of the target is vastly different (e.g. almost
no common pathnames), the behaviour is certainly understandable. Ancient
git used straight three-way merge for cherry-pick, but recent ones use
more expensive "recursive-merge", which tries to detect renames. If the
states of trees are very dissimilar, you can end up wasting a lot of time.
$ H=$(git rev-parse 7caef83^) ;# the commit before cherry-pick
$ C=b42b77e6 ;# the cherry-picked one
cherry-pick operation roughly runs these two diffs:
$ time git diff --shortstat -M $H $C
$ time git diff --shortstat -M $H $C^1
and uses the result to perform its work. Can you clock these?
If you rarely have renames, it may be much more efficient to run "git
format-patch -1 --stdout $C | git am -3" instead of cherry-pick.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html