unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: ofv@wanadoo.es, emacs-devel@gnu.org
Subject: Re: Progress report on git-blame
Date: Sun, 26 Jan 2014 21:40:51 +0200	[thread overview]
Message-ID: <83sisaa5vg.fsf@gnu.org> (raw)
In-Reply-To: <jwveh3uk1m2.fsf-monnier+emacs@gnu.org>

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: ofv@wanadoo.es,  emacs-devel@gnu.org
> Date: Sun, 26 Jan 2014 14:05:17 -0500
> 
> > Perhaps we should define what it means "find the history of that chunk
> > of text".  I'm not sure we all talk about the same use case.
> 
> Find the sequence of patches (with their corresponding log comments)
> that results in that chunk of text (presented in reverse-chronological
> order).

How do you define "that chunk of text"?  For the initial (latest)
revision, the answer is clear.  But, as you go backwards in time, the
text becomes less and less similar to what it is today, and can also
move around.  So which revisions are relevant to "that chunk of text"
becomes harder and harder to decide.  What is today 10 lines could
once be only one, and could have been moved from some other place, or
constructed from several different parts, each one taken from a
different place.  Or something that is a function today might have
been just a code fragment in the past, part of some other function.

When we the humans look at the results of applying changes in reverse,
we can make that decision because we know what we are looking for:
some specific trait of the original code in which we are interested.
But how can a program know that?  How can you explain it what you are
interested in?

The usual pattern I apply 'annotate' goes like this:

  a) annotate foo.c, find the revision that changed "that chunk of
     text"

  b) examine the relevant parts of the diffs for that revision

  c) if the diffs don't show what I'm looking for, annotate foo.c as
     it was before that revision, and go back to b)

The crucial parts here are (1) to examine the diffs, and (2) decide
where are "the relevant parts" to look.  How can we do this
programmatically, so that the "history of that chunk of text" will
indeed show what we want it to?



  reply	other threads:[~2014-01-26 19:40 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-09 14:02 RFC - cleaning up /etc Eric S. Raymond
2014-01-09 14:48 ` Samuel El-Borai
2014-01-09 15:09 ` Samuel El-Borai
2014-01-09 16:57 ` Glenn Morris
2014-01-09 17:42   ` Eric S. Raymond
2014-01-09 19:50     ` Glenn Morris
2014-01-10 14:35 ` Richard Stallman
2014-01-10 15:51   ` Eric S. Raymond
2014-01-11  7:15     ` Richard Stallman
2014-01-11 10:17       ` Eric S. Raymond
2014-01-11 18:37         ` Richard Stallman
2014-01-11 10:53       ` Ulrich Mueller
2014-01-11 20:01       ` Glenn Morris
2014-01-11 20:59         ` Eric S. Raymond
2014-01-11 21:10           ` Eli Zaretskii
2014-01-11 21:27             ` Eric S. Raymond
2014-01-12  0:07           ` Lars Magne Ingebrigtsen
2014-01-12  0:20             ` Eric S. Raymond
2014-01-12  0:37             ` David Kastrup
2014-01-12  3:51               ` Eli Zaretskii
2014-01-25  1:06               ` Progress report on git-blame (was: RFC - cleaning up /etc) David Kastrup
2014-01-25  7:34                 ` Eli Zaretskii
2014-01-25  8:59                   ` Progress report on git-blame David Kastrup
2014-01-25  9:21                     ` martin rudalics
2014-01-25  9:27                       ` David Kastrup
2014-01-25 10:12                         ` David Kastrup
2014-02-20 18:33                           ` David Kastrup
2014-01-25 18:21                     ` Lars Ingebrigtsen
2014-01-25 18:30                       ` David Kastrup
2014-01-25 18:52                       ` Óscar Fuentes
2014-01-25 18:59                         ` David Kastrup
2014-01-25 19:31                           ` Eli Zaretskii
2014-01-25 19:44                           ` Óscar Fuentes
2014-01-25 20:02                             ` David Kastrup
2014-01-25 21:45                       ` Stefan Monnier
2014-01-26 14:40                         ` Aneesh Kumar K.V
2014-01-27 14:17                           ` Stefan Monnier
2014-01-25 21:48                       ` Stefan Monnier
2014-01-25 23:03                         ` Óscar Fuentes
2014-01-26  1:48                           ` Stefan Monnier
2014-01-26 17:37                             ` Eli Zaretskii
2014-01-26 19:05                               ` Stefan Monnier
2014-01-26 19:40                                 ` Eli Zaretskii [this message]
2014-01-26 22:14                                   ` Stefan Monnier
2014-01-26  6:30                         ` David Kastrup
2014-01-26 15:07                           ` Stefan Monnier
2014-01-25  8:28                 ` David Engster
2014-01-25  9:14                   ` David Kastrup
2014-01-12  3:03             ` RFC - cleaning up /etc Stefan Monnier
2014-01-12 13:46         ` Richard Stallman
2014-01-12 19:17           ` Glenn Morris

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83sisaa5vg.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=ofv@wanadoo.es \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).