On Wed, May 22, 2013 at 7:08 PM, Junio C Hamano <[email protected]> wrote:
> Felipe Contreras <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html