From: Linus Torvalds <torvalds@osdl.org>
To: Ray Lehtiniemi <rayl@mail.com>
Cc: Alex Riesen <raa.lkml@gmail.com>,
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>,
Keith Packard <keithp@keithp.com>,
Junio C Hamano <junkio@cox.net>,
cworth@cworth.org, Martin Langhoff <martin.langhoff@gmail.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: [Census] So who uses git?
Date: Tue, 31 Jan 2006 18:04:31 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0601311747360.7301@g5.osdl.org> (raw)
In-Reply-To: <20060201013901.GA16832@mail.com>
On Tue, 31 Jan 2006, Ray Lehtiniemi wrote:
>
> for what it's worth, it's certainly true here... i'm using git to help
> me manage a similar project where i work.
Hmm.
We _could_ actually fairly easily add a flag to the index which means
"don't even bother comparing - assume same", and then have specific
operations to clear that flag.
That would allow people with slow filesystems (not just Windows: even
under Linux, the cold-cache case is always going to be pretty slow) to
have a _choice_: they could continue to use git it is done now (explicit
checks), _or_ they could mark all their index caches as "implicitly
up-to-date" and use a separate program to mark them as being potentially
edited.
We still have one unused bit in the cache-entry "ce_flags", so we wouldn't
even need to break any existing index files with it.
We'd just need to have two new (fast) operations:
- mark one or more files as being "implicitly up-to-date"
"git checkout" would do this if the proper flag was set in the
.git/config file.
"git-update-index --refresh" would do this for files that weren't
already implicitly up-to-date _and_ the refresh actually showed it to
match (and the .git/config file said so).
- mark one or more files as _not_ being implicitly up-to-date:
people would do this by hand when editing a file (or when just deciding
that they want git to re-check everything again)
They're fast, because they are purely in the cache (well, git-update-index
obviously isn't, but the new op wouldn't be any _slower_ than the old
one).
Looks simple enough. The big thing to remember is to clear that
"implicitly up-to-date" flag whenever we make changes (ie we'd probably
make "add_cache_entry()" always clear it, possibly with a flag to add it
as "pre-verified" which would set it).
Comments? Junio, what do you think?
> we're working on a vendor supplied tree which is also hacked upon
> by various VAR companies. the tree in question has ~20,000 files
> totalling nearly 1.4 GB of source files, ms word docs, binary-only
> libraries for a wide array of processor variants, windows exe
> files, video clips, etc. (however, the amount of actual source code
> interspersed in there is only about 6000 files totaling about 112 MB)
>
> here's a repo sitting on the local linux filesystem with cold cache:
>
> reiserfs$ time git update-index --refresh
> real 0m17.422s
> user 0m0.025s
> sys 0m0.320s
.. somewhat painful, but with enough memory this is hopefully a pretty
rare case.
> and with hot cache
>
> reiserfs$ time git update-index --refresh
> real 0m0.151s
> user 0m0.020s
> sys 0m0.067s
This is how it _should_ look.
But:
> for comparison, one of our sandboxes is sitting on an NTFS file system,
> accessed via SMB:
>
> smbfs$ time git update-index --refresh
> real 11m36.502s
> user 0m6.830s
> sys 0m5.086s
Ouch, ouch, ouch.
Sounds like every single stat() will go out the wire. I forget what the
Linux NFS client does, but I _think_ it has a metadata timeout that avoids
this. But it might be as bad under NFS.
Has anybody used git over NFS? If it's this bad (or even close to), I
guess the "mark files as up-to-date in the index" approach is a really
good idea..
Of course, the whole point of git is that you should keep your repository
close, but sometimes NFS - or similar - is enforced upon you by other
issues, like the fact that the powers-that-be want anonymous workstations
and everybody should work with a home-directory automounted over NFS..
Linus
next prev parent reply other threads:[~2006-02-01 2:08 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-26 2:10 LCA06 Cogito/GIT workshop - (Re: git-whatchanged: exit out early on errors) Martin Langhoff
2006-01-28 4:47 ` Linus Torvalds
2006-01-28 5:33 ` Martin Langhoff
2006-01-28 5:53 ` Linus Torvalds
2006-01-28 6:32 ` Junio C Hamano
2006-01-29 10:12 ` Fredrik Kuivinen
2006-01-29 20:15 ` Junio C Hamano
2006-01-28 11:00 ` Keith Packard
2006-01-28 21:08 ` [Census] So who uses git? Junio C Hamano
2006-01-29 2:14 ` Morten Welinder
2006-01-29 3:53 ` Junio C Hamano
2006-01-29 14:19 ` Morten Welinder
2006-01-29 20:15 ` Junio C Hamano
2006-01-29 10:09 ` Keith Packard
2006-01-29 11:18 ` Radoslaw Szkodzinski
2006-01-29 18:12 ` Greg KH
2006-01-31 18:33 ` Radoslaw Szkodzinski
2006-01-31 19:50 ` Radoslaw Szkodzinski
2006-01-31 20:43 ` Junio C Hamano
2006-01-31 21:02 ` Radoslaw Szkodzinski
2006-01-30 22:51 ` Alex Riesen
2006-01-31 21:25 ` Linus Torvalds
2006-01-31 21:52 ` J. Bruce Fields
2006-01-31 22:01 ` Alex Riesen
[not found] ` <20060201013901.GA16832@mail.com>
2006-02-01 2:04 ` Linus Torvalds [this message]
2006-02-01 2:09 ` Linus Torvalds
2006-02-09 5:15 ` [PATCH] "Assume unchanged" git Junio C Hamano
2006-02-09 5:49 ` [PATCH] "Assume unchanged" git: do not set CE_VALID with --refresh Junio C Hamano
2006-02-09 5:50 ` [PATCH] ls-files: debugging aid for CE_VALID changes Junio C Hamano
2006-02-01 2:31 ` [Census] So who uses git? Junio C Hamano
2006-02-01 3:43 ` Linus Torvalds
2006-02-01 7:03 ` Junio C Hamano
[not found] ` <20060201045337.GC25753@mail.com>
2006-02-01 5:04 ` Linus Torvalds
2006-02-01 5:42 ` Junio C Hamano
2006-02-01 16:15 ` Jason Riedy
2006-02-01 19:20 ` Julian Phillips
2006-02-01 19:29 ` Linus Torvalds
2006-02-06 21:15 ` Chuck Lever
2006-02-01 2:52 ` Martin Langhoff
2006-02-01 3:48 ` Linus Torvalds
2006-02-01 19:30 ` H. Peter Anvin
2006-02-01 14:55 ` Alex Riesen
2006-02-01 16:25 ` Linus Torvalds
2006-02-02 9:12 ` Alex Riesen
2006-01-29 18:37 ` Dave Jones
2006-01-29 20:17 ` Daniel Barkalow
2006-01-29 20:29 ` Martin Langhoff
2006-01-30 15:23 ` Mike McCormack
2006-01-30 18:58 ` Carl Baldwin
2006-01-31 10:27 ` Johannes Schindelin
2006-01-31 15:24 ` Carl Baldwin
2006-01-31 15:31 ` Johannes Schindelin
2006-01-31 17:30 ` Linus Torvalds
2006-01-31 18:12 ` J. Bruce Fields
2006-01-31 19:33 ` Junio C Hamano
2006-01-31 19:44 ` Jon Loeliger
2006-01-31 19:52 ` Junio C Hamano
[not found] ` <7vd5i8w2nc.fsf@assigned-by-dhcp.cox.net>
2006-01-31 20:56 ` J. Bruce Fields
2006-01-31 20:06 ` J. Bruce Fields
2006-01-31 19:01 ` Keith Packard
2006-01-31 19:21 ` Linus Torvalds
2006-01-31 22:55 ` Joel Becker
2006-02-01 14:43 ` Johannes Schindelin
2006-01-31 20:56 ` Sam Ravnborg
2006-01-31 22:21 ` Junio C Hamano
2006-02-01 19:34 ` H. Peter Anvin
2006-01-31 23:16 ` Daniel Barkalow
2006-01-31 23:36 ` Petr Baudis
2006-01-31 23:47 ` Junio C Hamano
2006-02-01 0:38 ` Linus Torvalds
2006-02-01 0:52 ` Junio C Hamano
2006-02-01 2:19 ` Daniel Barkalow
2006-02-01 6:42 ` Junio C Hamano
2006-02-01 7:22 ` Carl Worth
2006-02-01 8:26 ` Junio C Hamano
2006-02-01 9:59 ` Randal L. Schwartz
2006-02-01 20:48 ` Junio C Hamano
2006-02-01 17:11 ` Linus Torvalds
2006-02-01 17:18 ` Nicolas Pitre
2006-02-01 20:27 ` Junio C Hamano
2006-02-01 21:09 ` Linus Torvalds
2006-02-01 21:34 ` Nicolas Pitre
2006-02-01 21:59 ` Junio C Hamano
2006-02-01 22:25 ` Nicolas Pitre
2006-02-01 22:50 ` Junio C Hamano
2006-02-02 14:59 ` Andreas Ericsson
2006-02-01 22:35 ` Linus Torvalds
2006-02-01 23:33 ` Two ideas for improving git's user interface Carl Worth
2006-02-02 0:38 ` Junio C Hamano
2006-02-02 1:16 ` Carl Worth
2006-02-02 2:25 ` Junio C Hamano
2006-02-03 23:57 ` Carl Worth
2006-02-02 1:23 ` Linus Torvalds
2006-02-02 1:44 ` Linus Torvalds
2006-02-04 8:03 ` Alan Chandler
2006-02-04 8:25 ` Junio C Hamano
2006-02-04 9:30 ` Alan Chandler
2006-02-04 0:20 ` Carl Worth
2006-02-04 2:08 ` Linus Torvalds
2006-02-06 23:42 ` Carl Worth
2006-02-02 12:31 ` Florian Weimer
2006-02-02 16:30 ` Carl Baldwin
2006-02-01 22:57 ` [Census] So who uses git? Daniel Barkalow
2006-02-01 22:00 ` Joel Becker
2006-02-01 19:32 ` H. Peter Anvin
-- strict thread matches above, loose matches on Subject: below --
2006-02-01 7:08 linux
2006-02-01 8:51 ` Junio C Hamano
2006-02-01 16:04 ` Linus Torvalds
2006-02-01 16:10 ` Alex Riesen
2006-02-01 21:27 ` linux
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=Pine.LNX.4.64.0601311747360.7301@g5.osdl.org \
--to=torvalds@osdl.org \
--cc=astralstorm@gorzow.mm.pl \
--cc=cworth@cworth.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=keithp@keithp.com \
--cc=martin.langhoff@gmail.com \
--cc=raa.lkml@gmail.com \
--cc=rayl@mail.com \
/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).