On Wed, May 22, 2013 at 7:08 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Felipe Contreras <felipe.contreras@xxxxxxxxx> writes: > >>> IIRC, git-gui runs two blames, one without any -C and one with (I do >>> not offhand recall how many -C it uses) to show both. >> >> 'git blame' is a very expensive operation, perhaps we should add >> another option so users don't need to run two blames to find this. > > Yes, you could add a "struct origin *suspect_in_the_same_file" next > to the current "struct origin *suspect" to the blame_entry in order > to represent the origin you would get if you were to stop at a "move > across files" event, and keep digging, when you are operating under > "-C -C" or higher mode. No, this is what I meant: --- a/builtin/blame.c +++ b/builtin/blame.c @@ -1509,16 +1509,6 @@ static void found_guilty_entry(struct blame_entry *ent) if (ent->guilty) return; ent->guilty = 1; - if (incremental) { - struct origin *suspect = ent->suspect; - - printf("%s %d %d %d\n", - sha1_to_hex(suspect->commit->object.sha1), - ent->s_lno + 1, ent->lno + 1, ent->num_lines); - emit_one_suspect_detail(suspect, 0); - write_filename_info(suspect->path); - maybe_flush_or_die(stdout, "stdout"); - } } /* @@ -1536,12 +1526,24 @@ static void assign_blame(struct scoreboard *sb, int opt) struct origin *suspect = NULL; /* find one suspect to break down */ - for (ent = sb->ent; !suspect && ent; ent = ent->next) - if (!ent->guilty) + for (ent = sb->ent; ent; ent = ent->next) + if (!ent->guilty) { suspect = ent->suspect; + break; + } + if (!suspect) return; /* all done */ + if (incremental && !is_null_sha1(suspect->commit->object.sha1)) { + printf("%s %d %d %d\n", + sha1_to_hex(suspect->commit->object.sha1), + ent->s_lno + 1, ent->lno + 1, ent->num_lines); + emit_one_suspect_detail(suspect, 0); + write_filename_info(suspect->path); + maybe_flush_or_die(stdout, "stdout"); + } + /* * We will use this suspect later in the loop, * so hold onto it in the meantime. -- Felipe Contreras -- 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