Am 23.05.2016 um 21:43 schrieb Junio C Hamano:
Johannes Sixt <j6t@xxxxxxxx> writes:
I'm not sure whether the new behavior is a defect in rerere.c or a
consequence of the extra rerere call in interactive rebase...
Interesting. When running an unnecessary "git rerere" (because it
already was run and recorded the preimage), we used to be silent.
With the updated code, we say something.
At least it seems that we do not record the same preimage as a
different variant, so the regression is hopefully merely cosmetic.
I do not think it is a crime to say "git rerere" repeatedly without
changing anything, so I do not think "rebase -i"'s call to rerere
in die_with_patch is wrong, even though some calls to it seem to be
made after seeing a "git merge" fail (which means we know 'rerere'
has been run already).
I think all plumbing that can turn an index into unmerged state has
a call to git_rerere() at the end (the only obvious exception being
"update-index" that lets you stuff higher stage entries to the
index), so as long as "rebase -i" uses them correctly, I suspect
that die_with_patch shouldn't have to have a call to "git rerere".
I also come to the conclusion that die_with_patch shouldn't have to have
a call to "git rerere". die_with_patch can be called after "git
cherry-pick", "git merge", "git commit", all of which have their own
rerere() invocation.
However, calling "git rerere" after a failed "git commit" may be
destructive: it would record a resolution even though the commit has not
be completed. Think of an squash commit being aborted because the user
notices an error in the last minute. If that error is in a conflict
resolution, that wrong resolution would be recorded.
-- Hannes
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html