git-cherry-pick: Add keep-redundant-commits option
authorNeil Horman <nhorman@tuxdriver.com>
Fri, 20 Apr 2012 14:36:15 +0000 (10:36 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 24 Apr 2012 21:52:12 +0000 (14:52 -0700)
commitb27cfb0d8d4cbb6d079c70ffeadac9c0dcfff250
tree54257175272370ddb09fe9ef1caeca8ae7cd68f2
parentdf478b744cee9821eb2abbe2202d262b87a34289
git-cherry-pick: Add keep-redundant-commits option

The git-cherry-pick --allow-empty command by default only preserves empty
commits that were originally empty, i.e only those commits for which
<commit>^{tree} and <commit>^^{tree} are equal.  By default commits which are
non-empty, but were made empty by the inclusion of a prior commit on the current
history are filtered out.  This option allows us to override that behavior and
include redundant commits as empty commits in the change history.

Note that this patch changes the default behavior of git cherry-pick slightly.
Prior to this patch all commits in a cherry-pick sequence were applied and git
commit was run.  The implication here was that, if a commit was redundant, and
the commit did not trigger the fast forward logic, the git commit operation, and
therefore the git cherry-pick operation would fail, displaying the cherry pick
advice (i.e. run git commit --allow-empty).  With this patch however, such
redundant commits are automatically skipped without stopping, unless
--keep-redundant-commits is specified, in which case, they are automatically
applied as empty commits.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-cherry-pick.txt
builtin/revert.c
sequencer.c
sequencer.h