Re: RFC GSoc Idea: blame: do not overly favor earlier parents

2014-03-06 Thread Junio C Hamano
David Kastrup  writes:

> Junio C Hamano  writes:
>
>> When looking at a merge, "git blame" inspects the blob object names
>> of all parents and if one of them exactly match the merge result,
>> pass the entire blame down to that parent.  This is very much in
>> line with the history simplification done with "git log" when
>> traversing a history with merges.
>
> [...]
>
>> Now, imagine if you amend M to create N, to add a single line at the
>> end of path.  M:path != N:path but there is very small difference
>> between the two.  That means B:path != N:path but the difference
>> between this merged result and the second parent is very small.
>
> That sounds very much like
>
> commit d5df1593f27bfceab807242a538cb3fa01256efd
> Merge: 7144168 0b4e246
> Author: Junio C Hamano 
> Date:   Fri Feb 28 13:51:19 2014 -0800
>
> Merge branch 'bl/blame-full-history' into pu

That one was an attempt to solve the right issue in a wrong way,
made things worse by breaking the consistency with the history
simplification of "git log".

The "Idea" is to solve it in the way that is still consistent with
the usual history simplification.


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: RFC GSoc Idea: blame: do not overly favor earlier parents

2014-03-06 Thread David Kastrup
Junio C Hamano  writes:

> When looking at a merge, "git blame" inspects the blob object names
> of all parents and if one of them exactly match the merge result,
> pass the entire blame down to that parent.  This is very much in
> line with the history simplification done with "git log" when
> traversing a history with merges.

[...]

> Now, imagine if you amend M to create N, to add a single line at the
> end of path.  M:path != N:path but there is very small difference
> between the two.  That means B:path != N:path but the difference
> between this merged result and the second parent is very small.

That sounds very much like

commit d5df1593f27bfceab807242a538cb3fa01256efd
Merge: 7144168 0b4e246
Author: Junio C Hamano 
Date:   Fri Feb 28 13:51:19 2014 -0800

Merge branch 'bl/blame-full-history' into pu

By disabling the tree-same optimization (which is consistent with
the default behaviour of "git log"-family of commands), make "git
blame" sometimes produce different result from the original code.

Because the "git blame" output can give result for each line from
only one lineage of the history, however, this can be only useful
when you are lucky---unlike "--full-history" of "git log"-family,
where we can show commits from both lineages of histories with an
equal weight.  See $gmane/240392 for more detailed discussion.

* bl/blame-full-history:
  blame: new option --prefer-first to better handle merged cherry-picks

-- 
David Kastrup
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html