From: Jonas Fonseca <fonseca@diku.dk>
To: david@lang.hm
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
git@vger.kernel.org
Subject: Re: [ANNOUNCE] tig-0.14
Date: Sun, 8 Feb 2009 11:47:49 +0100 [thread overview]
Message-ID: <2c6b72b30902080247n31e5c532m31006fcb07ca95da@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.1.10.0902070050490.8086@asgard.lang.hm>
On Sat, Feb 7, 2009 at 09:55, <david@lang.hm> wrote:
> On Fri, 6 Feb 2009, Junio C Hamano wrote:
>> Jeff King <peff@peff.net> writes:
>>> My impression is that tig is currently doing (1). I think (2) will
>>> suffer from the same problem, but in practice the margin of error will
>>> be much smaller because your are rewinding through fewer changes. So if
>>> that is what you were suggesting, I think it is probably worth trying.
Tig wasn't using the line number or even the filename, this has now been fixed.
>> It has been quite a while since I did the "show previous" feature of
>> "git-blame --porcelain" that has been forever queued in 'next'; if I
>> remember correctly, it implemented (2).
>>
>> The reason why it never graduated from 'next' is exactly this issue. By
>> definition, there is no "previous" line number (if there were such a thing
>> that says "This line was at line N in the parent of the blamed commit",
>> then the commit wouldn't have taken the blame but would have passed it
>> down to the parent), and we need to come up with a reasonable heuristics.
So it ist somewhat safe to assume that the line didn't originate from
a different file, since git-blame would have picked that up?
> this sounds like the same basic problem I was having around the begninning
> of the year (thread subject 'how to track the history of a line in a file')
> what I ended up doing was to use git blame to go back and find the commit
> where a line was introduced, then use git diff to find the changes, then
> find the hunk of the diff that introduced the line, then find the lines that
> were removed and trace them back (repeating the process)
I've tried to implement something like this by using the output of
"git-diff-tree -U0". One problem it does not yet handle is the
cut'n'paste within the same file where the deleted line ends up in a
different hunk. So it won't jump to the correct place if you try to
trace back for example the origin of the parse_options function in
tig.c since at some point I moved it down in the file. However, it
does work quite well for tracing back the origin of for example the
DATE_COLS macro which was rewritten a few times.
I guess it comes down to what you can assume about the features or
"uniqueness" of the line (or lines) that are being traced back and
whether the history and commits are well organized.
--
Jonas Fonseca
next prev parent reply other threads:[~2009-02-08 10:51 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-05 20:44 [ANNOUNCE] tig-0.14 Jonas Fonseca
2009-02-06 10:49 ` bill lam
2009-02-06 14:29 ` Jonas Fonseca
2009-02-06 15:25 ` Sitaram Chamarty
2009-02-08 10:07 ` Jonas Fonseca
2009-02-11 16:05 ` showing SHA1 of parent commit in tig [was " Sitaram Chamarty
2009-02-12 1:19 ` Jonas Fonseca
2009-02-12 3:28 ` Sitaram Chamarty
2009-02-06 19:15 ` Jeff King
2009-02-06 22:10 ` Jonas Fonseca
2009-02-06 22:53 ` Jakub Narebski
2009-02-08 10:13 ` Jonas Fonseca
2009-02-07 7:10 ` Jeff King
2009-02-07 7:28 ` Junio C Hamano
2009-02-07 8:55 ` david
2009-02-08 10:47 ` Jonas Fonseca [this message]
2009-02-08 10:55 ` Jonas Fonseca
2009-02-08 11:06 ` Jeff King
2009-02-08 11:52 ` Jonas Fonseca
2009-02-07 11:26 ` Jeff King
2009-02-08 10:31 ` Jonas Fonseca
2009-02-08 11:00 ` Jeff King
2009-02-08 11:49 ` Jonas Fonseca
2009-02-07 2:48 ` Mikael Magnusson
2009-02-09 22:07 ` Peter Baumann
2009-02-09 22:22 ` Jeff King
2009-02-09 22:30 ` Peter Baumann
2009-02-10 18:42 ` Jonas Fonseca
2009-02-10 21:23 ` Jari Aalto
2009-02-10 13:29 ` Ted Pavlic
2009-02-10 18:29 ` Jonas Fonseca
2009-02-10 19:07 ` Brian Gernhardt
2009-02-10 19:29 ` Stefan Karpinski
2009-02-10 20:41 ` Jonas Fonseca
2009-02-10 20:49 ` Brian Gernhardt
2009-02-10 21:13 ` Jonas Fonseca
2009-02-10 21:18 ` Brian Gernhardt
2009-02-11 14:06 ` Ted Pavlic
2009-02-12 1:30 ` Jonas Fonseca
2009-02-11 14:19 ` Ted Pavlic
2009-02-20 17:24 ` Ted Pavlic
2009-02-20 18:34 ` Jonas Fonseca
2009-02-20 20:36 ` Ted Pavlic
2009-02-20 23:31 ` Jonas Fonseca
2009-02-25 21:54 ` Jonas Fonseca
2009-02-11 14:03 ` Ted Pavlic
2009-02-11 14:12 ` Ted Pavlic
2009-02-11 17:47 ` Ted Pavlic
2009-02-12 1:08 ` Jonas Fonseca
2009-02-12 21:48 ` Tilo Schwarz
2009-02-12 22:24 ` Jonas Fonseca
2009-02-12 23:14 ` Tilo Schwarz
2009-02-15 23:47 ` Jonas Fonseca
2009-02-16 1:33 ` Sitaram Chamarty
2009-02-16 12:10 ` Jonas Fonseca
2009-02-16 15:14 ` Sitaram Chamarty
2009-02-16 15:25 ` Thomas Adam
2009-02-16 19:52 ` Jonas Fonseca
2009-02-17 7:47 ` Marco Costalba
2009-02-16 21:12 ` Tilo Schwarz
2009-02-20 23:35 ` Jonas Fonseca
2009-02-21 17:35 ` Tilo Schwarz
2009-02-21 17:41 ` Jonas Fonseca
2009-02-21 20:18 ` Tilo Schwarz
2009-02-16 21:55 ` Tilo Schwarz
2009-02-13 2:31 ` bill lam
2009-02-13 23:57 ` Jonas Fonseca
2009-02-14 3:31 ` bill lam
2009-02-15 23:22 ` Jonas Fonseca
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2c6b72b30902080247n31e5c532m31006fcb07ca95da@mail.gmail.com \
--to=fonseca@diku.dk \
--cc=david@lang.hm \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).