Skip to contentSkip to conversation

worlds slowest git repo- what to do?

DISCUSSION Philip Oakley 4 participants 5 messages Jun 15, 2016 2 messages not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

From: "John Fisher" <[email protected]>

Quoted 18 lines

I assert based on one piece of evidence ( a post from a facebook dev) that I now have the worlds biggest and slowest git repository, and I am not a happy guy. I used to have the worlds biggest CVS repository, but CVS can't handle multi-G sized files. So I moved the repo to git, because we are using that for our new projects.

goal:
keep 150 G of files (mostly binary) from tiny sized to over 8G in a version-control system.

problem:
git is absurdly slow, think hours, on fast hardware.

question:
any suggestions beyond these-
http://git-annex.branchable.com/
https://github.com/jedbrown/git-fat
https://github.com/schacon/git-media
http://code.google.com/p/boar/
subversion

Quoted 1 line

?

At the moment some of the developers are looking to speed up some of the code on very large repos, though I think they are looking at code repos, rather than large file repos. They were looking for large repos to test some of the code upon ;-)

I've copied the Git list should they want to make any suggestions.

Quoted 5 lines

Thanks.

Philip

Signature · 3 lines
You received this message because you are subscribed to the Google Groups "Git for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected]
For more options, visit https://groups.google.com/d/optout.
#2 lore raw
Quoted 23 lines · Philip Oakley

From: "John Fisher" <[email protected]>

Quoted 22 lines

I assert based on one piece of evidence ( a post from a facebook dev) that I now have the worlds biggest and slowest git repository, and I am not a happy guy. I used to have the worlds biggest CVS repository, but CVS can't handle multi-G
sized files. So I moved the repo to git, because we are using that for our new projects.

goal:
keep 150 G of files (mostly binary) from tiny sized to over 8G in a version-control system.

problem:
git is absurdly slow, think hours, on fast hardware.

question:
any suggestions beyond these-
http://git-annex.branchable.com/
https://github.com/jedbrown/git-fat
https://github.com/schacon/git-media
http://code.google.com/p/boar/
subversion

You could shard. Break the problem up into smaller repositories, eg via submodules. Try ~128 shards and I'd expect that 129 small clones should complete faster than a single 150G clone, as well as being resumable etc.

The first challenge will be figuring out what to shard on, and how to lay out the repository. You could have all of the large files in their own directory, and then the main repository just has symlinks into the sharded area. In that case, I would recommend sharding by date of the introduced blob, so that there's a good chance you won't need to clone everything forever; as shards with not many files for the current version could in theory be retired. Or, if the directory structure already suits it, you could "directly" use submodules.

The second challenge will be writing the filter-branch script for this :-)

Good luck,
Sam

#3 lore raw
In reply to Philip Oakley
Quoted 12 lines · Philip Oakley

From: "John Fisher" <[email protected]>

Quoted 11 lines

I assert based on one piece of evidence ( a post from a facebook dev) that I now have the worlds biggest and slowest git
repository, and I am not a happy guy. I used to have the worlds biggest CVS repository, but CVS can't handle multi-G
sized files. So I moved the repo to git, because we are using that for our new projects.

goal:
keep 150 G of files (mostly binary) from tiny sized to over 8G in a version-control system.

I think your best bet so far is git-annex (or maybe bup) for dealing with huge files. I plan on resurrecting Junio's split-blob series to make core git handle huge files better, but there's no eta on that. The problem here is about file size, not the number of files, or history depth, right?

Quoted 2 lines
Quoted 2 lines

problem:
git is absurdly slow, think hours, on fast hardware.

Probably known issues. But some elaboration would be nice (e.g. what operation is slow, how slow, some more detail characteristics of the repo..) in case new problems pop up.

Signature · 1 line
Duy

A message that is not in the archive (sent off-list or not yet received): CACsJy8CmiW88tNavRphZa_uMU=jVUCQE6cw5+t2AYnf5dDmcsQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#5 lore raw
Quoted 9 lines · Duy Nguyen
Quoted 8 lines · Philip Oakley

From: "John Fisher" <[email protected]>

Quoted 7 lines

I assert based on one piece of evidence ( a post from a facebook dev) that I now have the worlds biggest and slowest git
repository, and I am not a happy guy. I used to have the worlds biggest CVS repository, but CVS can't handle multi-G
sized files. So I moved the repo to git, because we are using that for our new projects.

Quoted 4 lines
Quoted 3 lines
Quoted 3 lines

goal:
keep 150 G of files (mostly binary) from tiny sized to over 8G in a version-control system.

I think your best bet so far is git-annex

good, I am looking at that

Quoted 5 lines

(or maybe bup) for dealing
with huge files. I plan on resurrecting Junio's split-blob series to make core git handle huge files better, but there's no eta on that. The problem here is about file size, not the number of files, or history depth, right?

When things here calm down, I could easily test the repo without the giant files, leaving 99% of files in the repo. There is hardly any history depth because these are releases, version controlled by directory name. As has been suggested I could be forced to abandon the version-control, even to the point of just using rsync. But I've been doing this with CVS for 10 years now and I hate to change or in any way move away fron KISS. Moving it to Git may not have been one of my better ideas...

Quoted 2 lines

Probably known issues. But some elaboration would be nice (e.g. what operation is slow, how slow, some more detail characteristics of the repo..) in case new problems pop up.

so far I have done add, commit, status, clone - commit and status are slow; add seems to depend on the files involved, clone seems to run at network speed.
I can provide metrics later, see above. email me offline with what you want.

John

Signature · 3 lines
You received this message because you are subscribed to the Google Groups "Git for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected]
For more options, visit https://groups.google.com/d/optout.
#6 lore raw
Quoted 6 lines · John Fisher
Quoted 2 lines

Probably known issues. But some elaboration would be nice (e.g. what operation is slow, how slow, some more detail characteristics of the repo..) in case new problems pop up.

so far I have done add, commit, status, clone - commit and status are slow; add seems to depend on the files involved, clone seems to run at network speed.
I can provide metrics later, see above. email me offline with what you want.

OK "commit -a" should be just as slow as "add", but as-is commit and status should be fast unless there are lots of files (how many in your worktree?) or we hit something that makes us look into (large) file content anyway.

Signature · 1 line
Duy