Detecting redundant commits

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

Detecting redundant commits

From: <hidden>
Date: 2016-06-15 23:07:37

I am attempting to teach cherry-pick to handle redundant commits
gracefully (via a new --skip-redundant-commits option) instead of
aborting.  However, I'm struggling a bit with how to check if the
changes in a commit will become redundant when appied to the new HEAD.

I found diff_tree_sha1 which seems promising.  Am I on the right track?
If not, what's the best way to determine whether a commit object is
redundant with respect to HEAD?

                           -David

Re: Detecting redundant commits

From: Jeff King <hidden>
Date: 2016-06-15 23:07:38

On Mon, Jan 04, 2016 at 09:59:09AM -0600, greened@obbligato.org wrote:
I am attempting to teach cherry-pick to handle redundant commits
gracefully (via a new --skip-redundant-commits option) instead of
aborting.  However, I'm struggling a bit with how to check if the
changes in a commit will become redundant when appied to the new HEAD.

I found diff_tree_sha1 which seems promising.  Am I on the right track?
If not, what's the best way to determine whether a commit object is
redundant with respect to HEAD?
Do you mean commits that are in the cherry-pick range but have matching
commits already in HEAD? For that, you'd want to use patch-ids.[ch], but
I think we already do.

Or do you mean commits that, when applied, we find turn out to have
empty changes (e.g., because we have a set of commits that have
different patch-ids, but do roughly the same thing)? I don't think you
can find that with a straight end-to-end diff. You have try to apply and
then look at the result. I think we already catch that case (see
--allow-empty), though I think the only options are "preserve" or
"abort", not "silently skip" (and it sounds like the latter is what you
would want).

Or am I missing the point completely? :)

-Peff

Re: Detecting redundant commits

From: David Greene <hidden>
Date: 2016-06-15 23:07:38


On January 4, 2016 10:00:26 PM CST, Jeff King [off-list ref] wrote:
Or do you mean commits that, when applied, we find turn out to have
empty changes (e.g., because we have a set of commits that have
different patch-ids, but do roughly the same thing)? I don't think you
can find that with a straight end-to-end diff. You have try to apply
and
then look at the result. I think we already catch that case (see
--allow-empty), though I think the only options are "preserve" or
"abort", not "silently skip" (and it sounds like the latter is what you
would want).
This.  I see where --allow-empty is handled in prepare_to_commit but it is not so easy to skip the commit at that point due to state changes.  I was trying to avoid going into commit at all by determining ahead of time whether the commit would become empty.  Any ideas?

David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help