git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Martin Langhoff" <martin.langhoff@gmail.com>
To: "Junio C Hamano" <junkio@cox.net>
Cc: "Petr Baudis" <pasky@suse.cz>, git@vger.kernel.org
Subject: Re: [ANNOUNCE] Git wiki
Date: Sat, 6 May 2006 18:53:36 +1200	[thread overview]
Message-ID: <46a038f90605052353m2d2aca11weac7efee80c6fb35@mail.gmail.com> (raw)
In-Reply-To: <7vr738w8t4.fsf@assigned-by-dhcp.cox.net>

On 5/6/06, Junio C Hamano <junkio@cox.net> wrote:
> > If you use persistent file ids, you never miss it _AND_ you DO NOT WALK
> > THE COMMIT CHAIN! You still just match file ids in the two trees.
>
> It is unworkable.

+1 -- explicit file ids are evil. Arch/TLA demonstrated that amply...
they are a serious annoyance to the end user, they have a lot of
not-elegantly solvable cases (same file created with the same contents
in several repos -- say via an emailed patch) that git gets right
_today_.

They _are_ useful in a very small set of cases -- namely in the case
of a naive mv, which git handles correctly today. Subtler things git
sometimes does right, sometimes fails, but it can be made to be much
smarter by interpreting content changes better, for instance all this
talk about getting pickaxe to guess where the patch should be applied
for a file that got split into 3.

But those subtler cases are totally impossible with explicit id
tracking. I used Arch for a long time with very large trees, and
renames coming left, right and centre. Explicit ids didn't help much,
and the number of manual fixups we had to do was awful.

I am using GIT with the very same project, and just now, typing this,
I realised that there are still many renames happening in the project.
I had forgotten about it -- well, not really: I do use git-merge
instead of cg-merge when I suspect there may be interesting cases ;-)

Of course, YMMV, and I have to confess I was a sceptic for a while...
but now as an end-user dealing with messy projects, I say LIRAR: Linus
Is Right About Renames.

OTOH,

>> Try doing
>>
>> git diff v1.3.0..
>>
>> and think about what that actually _means_. Think about the fact that it
>> doesn't actually walk the commit chain at all: it diffs the trees between
>> v1.3.0 and the current one. What if the rename happened in a commit in
>> the middle?
>
> Then the automated renames detection will miss it given that the other
> accumulated differences are large enough, and the suggested workarounds
> _are_ precisely walking the commit chain.

I agree here with Pasky that after a while the automated
renames/copy/splitup detection will miss the operation in cases where
it would be interesting to note it to the user. IIRC git-rerere is the
tool that knows about this (still voodoo to me how) and could be used
to help here. At what (runtime) cost, I don't know, but that kind of
walking history to tell me more interesting things about the diff is
something that is usually worthwhile.

Usual disclaimers apply.


martin

  reply	other threads:[~2006-05-06  6:53 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-05  0:56 [ANNOUNCE] Git wiki linux
2006-05-05  6:22 ` Fredrik Kuivinen
2006-05-05  6:26   ` Jakub Narebski
2006-05-05  9:23   ` Petr Baudis
2006-05-05  9:51     ` Junio C Hamano
2006-05-05 16:40       ` Petr Baudis
2006-05-05 16:47       ` Jakub Narebski
2006-05-05 18:49         ` Jakub Narebski
2006-05-05 16:36 ` Petr Baudis
2006-05-05 17:48   ` Linus Torvalds
2006-05-05 19:04     ` Dave Jones
2006-05-05 18:15 ` Petr Baudis
2006-05-05 18:20   ` Petr Baudis
2006-05-05 18:27   ` Jakub Narebski
2006-05-05 18:31   ` Linus Torvalds
2006-05-05 18:54     ` Petr Baudis
2006-05-05 19:39       ` Jakub Narebski
2006-05-06 13:37         ` Jakub Narebski
2006-05-05 19:49       ` Junio C Hamano
2006-05-06  6:53         ` Martin Langhoff [this message]
2006-05-06  7:14           ` Junio C Hamano
2006-05-06  7:33           ` Jakub Narebski
2006-05-06  7:41             ` Junio C Hamano
2006-05-06 12:46               ` Bertrand Jacquin
2006-05-05 20:45   ` Olivier Galibert
  -- strict thread matches above, loose matches on Subject: below --
2006-05-02 23:25 Petr Baudis
2006-05-02 23:33 ` Junio C Hamano
2006-05-03  8:39   ` Paolo Ciarrocchi
2006-05-03  9:00     ` Petr Baudis
2006-05-03  9:13       ` Paolo Ciarrocchi
2006-05-03 13:41         ` Nicolas Pitre
2006-05-03 14:29           ` Shawn Pearce
2006-05-03 15:01             ` Andreas Ericsson
2006-05-03 15:24               ` Paolo Ciarrocchi
2006-05-03 15:30                 ` Jakub Narebski
2006-05-03 15:30               ` Linus Torvalds
2006-05-03 15:39                 ` Paolo Ciarrocchi
2006-05-03 16:06                   ` Linus Torvalds
2006-05-03 16:17                     ` Jakub Narebski
2006-05-03 16:19                       ` Paolo Ciarrocchi
2006-05-03 16:46                         ` Jakub Narebski
2006-05-03 19:21                       ` David Lang
2006-05-03 19:30                         ` Petr Baudis
2006-05-03 19:46                           ` David Lang
2006-05-03 20:07                             ` Petr Baudis
2006-05-04  0:53                           ` Daniel Barkalow
2006-05-03 16:47                 ` Theodore Tso
2006-05-03 17:06                   ` Linus Torvalds
2006-05-03 17:15                     ` Theodore Tso
2006-05-03 17:40                       ` Linus Torvalds
2006-05-03 22:39                     ` Sam Ravnborg
2006-05-03 22:46                       ` Petr Baudis
2006-05-03 22:50                         ` Joel Becker
2006-05-03 23:05                           ` Petr Baudis
2006-05-03 18:04                   ` Daniel Barkalow
     [not found]                   ` <20060503144522.7b5b7ba5.seanlkml@sympatico.ca>
2006-05-03 18:45                     ` sean
2006-05-03 20:58                 ` Junio C Hamano
2006-05-03 21:01                   ` Junio C Hamano
2006-05-03 22:13                   ` Linus Torvalds

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: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=46a038f90605052353m2d2aca11weac7efee80c6fb35@mail.gmail.com \
    --to=martin.langhoff@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=pasky@suse.cz \
    /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://80x24.org/mirrors/git.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).