git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Petr Baudis <pasky@suse.cz>
To: Linus Torvalds <torvalds@osdl.org>
Cc: linux@horizon.com, git@vger.kernel.org
Subject: Re: [ANNOUNCE] Git wiki
Date: Fri, 5 May 2006 20:54:45 +0200	[thread overview]
Message-ID: <20060505185445.GD27689@pasky.or.cz> (raw)
In-Reply-To: <Pine.LNX.4.64.0605051123420.3622@g5.osdl.org>

Dear diary, on Fri, May 05, 2006 at 08:31:06PM CEST, I got a letter
where Linus Torvalds <torvalds@osdl.org> said that...
> Moving data around happens with a whole lot more than "mv".

Let's keep this on the per-file level - if you want to go below the file
granularity, I already _DID_ say that I agree that explicit tracking is
not a way. (If sub-file tracking would end up having any usable
reliability in real-world cases, which is something I do not take for
granted.)

Another thing is, the sub-file content tracking would end up being a lot
more "magic" than the simple per-file content tracking, and you stated
several times that you prefer simple merge over better but magic merge -
so why do you prefer sub-file content tracking anyway?

> It happens with patches (somebody _else_ may have done an "mv", without 
> using git at all),

_Here_ is the place for automated renames detection. Between applying
and committing the patch, the user can verify that it got the renames
right. That's impossible when guessing the renames later.

> and it happens with editors (moving data around until 
> most of it exists in another file).

I doubt this in fact happens that often (to a degree the automatic
rename detection would catch). And if it happens, then the user has to
tell Git - I have never heard that _this_ would be any problem in other
version control systems. You could make it more foolproof by running the
automatic rename detection on the diff being committed and suggesting
the user that other yet unrecorded renames did happen.

The point is, the user stays in control and can override any stupid guess.

> So doing "*mv" is just a special case.
> 
> And supporting special cases is _wrong_. If you start depending on data 
> that isn't actually dependable, that's WRONG.

I prefer making this data dependable to having to resort to guessing on
dependable less amount of data.

> There's another reason why encoding movement information in the commit is 
> totally broken, namely the fact that a lot of the actions DO NOT WALK THE 
> COMMIT CHAIN!
> 
> 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.

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.

> The "track contents, not intentions" approach avoids both these things. 
> The end result is _reliable_, not a "random guess".

No, the end result is whichever some heuristic randomly guessed, and
it's not reliable either since the heuristic can change.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Right now I am having amnesia and deja-vu at the same time.  I think
I have forgotten this before.

  reply	other threads:[~2006-05-05 18: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 [this message]
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
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=20060505185445.GD27689@pasky.or.cz \
    --to=pasky@suse.cz \
    --cc=git@vger.kernel.org \
    --cc=linux@horizon.com \
    --cc=torvalds@osdl.org \
    /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).