On Wed, Jan 13, 2010 at 9:24 PM, Mike Frysinger <vap...@gentoo.org> wrote:
> i think our current work flows also significantly impede the smooth running of
> this.  if we had were using a dscm (git) on gentoo-x86, i feel like it'd be a
> much smoother ride for Gentoo devs to pull from a proxy maintainer and push on
> their behalf.
>

In theory, yes. In practice, git is too slow to handle 30,000 files.
Even simple operations like git add become painful even if you put the
whole of portage on tmpfs since git does a stat() on every single file
in the repository with every operation.

Simple test: do a git init followed by git add && git commit -m
"Initial commit" in your portage dir (.gitignore packages/ and
distfiles/)

Once this is done, you can test how it'll feel like to use a DSCM on
portage (without history). Unless you have a really fast SSD and
processor, you'll want to go back to the good old days of CVS with its
network-bound latencies on just 5-6 files in the current dir.

Besides this, there is the problem of accommodating people who use a
subtree of gentoo-x86, and those who don't want the entire CVS history
on their hard drives. In summation, robbat2 needs *our* help in the
following:

a) Push functionality in shallow clones (patches exist upstream)
b) Partial-tree checkouts (patches exist upstream)
c) Optimize git so it can handle 30,000 files
    - Maybe maintain a cache of directory timestamps and only stat()
directories?
    - Implement recursive timestamps on directories in various
filesystems and then in git (via xattrs perhaps)? People want to do
this for things like Tracker too. Prelim patches might exist.
d) Implement scripts/infra for people to fetch repository (shallow and
deep) bundles to initialize their local git clones (similar to portage
snapshots)
    - git clone from scratch taxes the server too much, just like
rsync from scratch
e) Server-side scripts for pushing to CIA.vc for pretty stats like we do in CVS
    - We want this for overlays right now too.
f) (Optional) Fix http cloning in git to make it "smarter" to help
people behind firewalls get anonymous clones (patches exist upstream)

Did I miss something Robin?

-- 
~Nirbheek Chauhan

Gentoo GNOME+Mozilla Team

Reply via email to