From: Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: "Shawn O. Pearce" <spearce@spearce.org>,
Junio C Hamano <junkio@cox.net>,
git@vger.kernel.org
Subject: Re: More precise tag following
Date: Sat, 27 Jan 2007 18:12:11 +0100 [thread overview]
Message-ID: <45BB87EB.7010200@fs.ei.tum.de> (raw)
In-Reply-To: <Pine.LNX.4.63.0701271728020.22628@wbgn013.biozentrum.uni-wuerzburg.de>
[-- Attachment #1: Type: text/plain, Size: 4885 bytes --]
Johannes Schindelin wrote:
> Ah, I think you fall in the "files matter" trap.
>
> My point is: for what git does it does not need information which might or
> might not be present, but it derives that information which was there from
> the beginning: the ancestry path.
>
> Many people don't use or even need blame. And what you want to introduce
> would affect them, too.
Many people do not use colored diffs. Introducing colored diff support affects them, too. In which way? Additional command line switches, for example. I don't think that's a big deal, and neither is a reverse map to create object-level DAGs.
> That is why I proposed a cache (of precomputed data): you don't have to
> change _anything_ in the file format, but you can speed the processes up
> -- locally! -- if they matter to you.
>
> Which means it works on old repositories, too.
Maybe I was not clear enough. I do not propose to change the file format, but to extend the information stored. In which way whatsoever. However I think that keeping this information along with trees in pack files seems very sensible. Or along pack files, whatever.
>> It might be sufficient for git.git, but certainly not for projects with
>> a long history. we are talking KDE, FreeBSD, OOo, something like this.
>> They each got about 400k commits. It takes literally *minutes* to get a
>> rev-list or a blame for a certain path. The algorithm simply does not
>> scale. And this has nothing to do with superior output, because hg does
>> it in O(num_of_file_revs), so it *can* be done.
>
> But can hg do it that fast, if you track code _movement_ between files? I
> doubt so.
>
> I don't know if git can, at the moment, but even if it cannot, in future
> versions this may well be possible, exactly because we do _not_ rely on
> metadata to be stored in the objects, which can be derived from the
> history as-is anyway.
Please don't take the mentioning of hg as an attack on git. You don't have to shoot back. It was just to illustrate that this information can be used to speed up certain operations considerably. Besides, I don't think that hg's repo format prevents it to do things which git can do. Just some things might be less elegant or easy.
> The important part is that you should not change the file format when you
> do not have to.
Do doubt. Especially not in a way which breaks backwards compatibility.
> Rather, calculate the information you need from the existing data, and if
> you can reuse it, store it locally. _That_ is flexibility.
Of course this is flexibility. But this also means that every consumer has to do this for every repo. Wouldn't it be nice to have it done one time and then stored in a pack?
> It also gives me a warm fuzzy feeling that no bogus "auxillary
> information" can be introduced by fetching from somewhere else. (It does
> not matter if intended or unintended.)
I agree on that.
> And if something is wrong with that "auxillary information", it can be
> regenerated correctly, without touching the real data -- the commit
> ancestry.
Yes, it always can be regenerated. I never said it should be made part of the core structure.
>>> Besides, we already introduced an orthogonal historisation by reflogs,
>>> and your method would not cope gracefully with that, would it?
>> I don't see how reflogs can play into this. After all we're talking
>> about the series of commits the blob experienced to get into its current
>> state, not the series of actions it took this repo to contain this blob.
> My point was that you want to introduce a reverse mapping onto the history
> DAG. But this claims that there is only one history you can possibly look
> at. This assumption is wrong.
Then you are reading it wrong. It is just a way to speed up the common way of operation. That doesn't mean that other ways stop working. git-rev-list does one thing and you wouldn't call it not being gracefull, just because it doesn't operate on reflogs?
> It can make a lot of sense to git-blame a change on a pull, maybe because
> you don't want to fix it yourself, but throw it all back to the lieutnant
> whom you pulled that part from.
>
> You could find that pull (in theory; I don't think it works right now)
> with git-blame walking the _reflogs_ instead of the _commit history_.
Fair enough. Nobody said that this wouldn't work anymore. I just said that working on commit history could be sped up considerably.
cheers
simon
--
Serve - BSD +++ RENT this banner advert +++ ASCII Ribbon /"\
Work - Mac +++ space for low €€€ NOW!1 +++ Campaign \ /
Party Enjoy Relax | http://dragonflybsd.org Against HTML \
Dude 2c 2 the max ! http://golden-apple.biz Mail + News / \
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
next prev parent reply other threads:[~2007-01-27 17:12 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-26 11:07 More precise tag following Junio C Hamano
2007-01-26 11:53 ` Junio C Hamano
2007-01-27 8:01 ` Shawn O. Pearce
2007-01-27 8:41 ` Junio C Hamano
2007-01-27 13:33 ` Jeff King
2007-01-27 17:47 ` Nicolas Pitre
2007-01-27 9:04 ` Simon 'corecode' Schubert
2007-01-27 12:58 ` Johannes Schindelin
2007-01-27 13:50 ` Simon 'corecode' Schubert
2007-01-27 16:30 ` Jakub Narebski
2007-01-27 17:36 ` Linus Torvalds
2007-01-27 16:46 ` Johannes Schindelin
2007-01-27 17:12 ` Simon 'corecode' Schubert [this message]
2007-01-27 19:13 ` Johannes Schindelin
2007-01-27 19:55 ` Simon 'corecode' Schubert
2007-01-27 19:41 ` Nicolas Pitre
2007-01-27 17:22 ` Linus Torvalds
2007-01-27 17:56 ` Linus Torvalds
2007-01-27 22:00 ` Junio C Hamano
2007-01-27 22:54 ` Linus Torvalds
2007-01-28 9:27 ` Junio C Hamano
2007-01-28 9:44 ` [PATCH] git-blame --porcelain: quote filename in c-style when needed Junio C Hamano
2007-01-28 14:25 ` [PATCH] git-blame --incremental: don't use pager René Scharfe
2007-01-28 19:09 ` Junio C Hamano
2007-01-28 19:14 ` Junio C Hamano
2007-01-29 0:32 ` René Scharfe
2007-01-29 2:35 ` [PATCH] git blame --progress Junio C Hamano
2007-01-29 7:00 ` Simon 'corecode' Schubert
2007-01-29 16:54 ` Alex Riesen
2007-01-29 18:12 ` Matthias Lederhofer
2007-01-29 19:06 ` Junio C Hamano
2007-01-29 19:59 ` René Scharfe
2007-01-29 20:24 ` Linus Torvalds
2007-01-30 1:53 ` Junio C Hamano
2007-01-28 19:08 ` More precise tag following Linus Torvalds
2007-01-28 19:18 ` Junio C Hamano
2007-01-28 19:57 ` Linus Torvalds
2007-01-28 20:01 ` Junio C Hamano
2007-01-28 20:20 ` [PATCH] document 'blame --incremental' Junio C Hamano
2007-01-28 21:06 ` More precise tag following Junio C Hamano
2007-01-28 23:01 ` Jeff King
2007-01-30 9:22 ` Junio C Hamano
2007-01-30 15:31 ` Shawn O. Pearce
2007-01-30 17:02 ` Linus Torvalds
2007-01-28 19:58 ` Junio C Hamano
2007-01-29 6:18 ` Shawn O. Pearce
2007-01-29 10:17 ` Junio C Hamano
2007-01-29 10:31 ` Shawn O. Pearce
2007-01-29 16:24 ` Linus Torvalds
2007-01-29 18:07 ` Simon 'corecode' Schubert
2007-01-29 19:29 ` Theodore Tso
2007-01-29 19:45 ` Linus Torvalds
2007-01-29 20:25 ` Jakub Narebski
2007-01-29 20:47 ` Shawn O. Pearce
2007-01-29 21:02 ` Jakub Narebski
2007-02-09 7:41 ` Shawn O. Pearce
2007-01-31 8:39 ` David Kågedal
2007-01-31 10:59 ` David Kågedal
2007-01-31 16:12 ` Peter Eriksen
2007-01-31 17:04 ` David Kågedal
2007-01-31 17:12 ` Peter Eriksen
2007-01-31 17:35 ` Jakub Narebski
2007-01-31 20:59 ` David Kågedal
2007-01-27 18:40 ` Simon 'corecode' Schubert
2007-01-27 19:02 ` Johannes Schindelin
2007-01-27 19:12 ` Simon 'corecode' Schubert
2007-01-27 19:19 ` Johannes Schindelin
2007-01-27 19:59 ` Jakub Narebski
2007-01-27 19:15 ` Linus Torvalds
2007-01-27 19:25 ` Linus Torvalds
2007-01-27 19:54 ` Jakub Narebski
2007-01-27 20:13 ` Linus Torvalds
2007-01-27 19:36 ` Chris Lee
2007-01-28 18:10 ` Theodore Tso
2007-01-28 18:27 ` Linus Torvalds
2007-01-28 22:26 ` David Lang
2007-01-29 17:34 ` Nicolas Pitre
2007-01-29 17:42 ` Linus Torvalds
2007-01-29 17:58 ` Nicolas Pitre
2007-01-29 19:16 ` Chris Lee
2007-01-29 23:00 ` Eric Wong
2007-01-30 0:42 ` Eric Wong
2007-01-30 0:48 ` Eric Wong
2007-01-30 8:51 ` Eric Wong
2007-01-27 18:52 ` Jakub Narebski
2007-01-27 20:16 ` Jeff King
2007-01-27 22:39 ` Linus Torvalds
2007-01-27 23:52 ` Jeff King
2007-01-28 2:39 ` Theodore Tso
2007-01-28 3:17 ` Randal L. Schwartz
2007-01-28 13:15 ` Jeff King
2007-01-28 7:40 ` Shawn O. Pearce
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=45BB87EB.7010200@fs.ei.tum.de \
--to=corecode@fs.ei.tum.de \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=spearce@spearce.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.
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).