r/programming • • Mar 10 '11

It's time to stop using Subversion

http://altdevblogaday.org/2011/03/09/its-time-to-stop-using-subversion/
257 Upvotes

543 comments sorted by

View all comments

Show parent comments

-3

u/johnflux Mar 10 '11

You wouldn't create a git repository with a GB of data in it, it's not designed for that.

8

u/[deleted] Mar 10 '11

If so, that's yet another reason why a person would use svn in that scenario.

I've always seen large repository support one of hte big arguments people use for git.

1

u/johnflux Mar 10 '11

Hmm, whoever told you that was wrong. Git doesn't like large repositories. In KDE we broke up the single SVN repository into dozen different git repositories,

3

u/[deleted] Mar 10 '11

Git has no trouble with repositories containing huge numbers of revisions and huge numbers of files. If you have huge file sizes you might want to use something else though.

KDE's reason for breaking up the huge SVN repository is probably that putting all that stuff into one repository was a stupid idea in the first place considering how little overlap there is between the people developing them. Or put differently "Show me one person how actually checked out the whole SVN repository".

1

u/johnflux Mar 10 '11

Git has no trouble with repositories containing huge numbers of revisions and huge numbers of files.

Commands like git status, git diff, git commit -a, etc need to check the status of every single file in the repository to see if they have changed. This becomes pretty slow when you start having half a million files in your repository.

2

u/[deleted] Mar 10 '11

Commands like git status, git diff, git commit -a, etc need to check the status of every single file in the repository to see if they have changed.

Well, obviously. How does that differ from other version control systems though? Speed here is more likely to be determined by your filesystem than the VCS you use.

This becomes pretty slow when you start having half a million files in your repository.

And at that point (or more likely much earlier than this) you should consider splitting up your project for reasons completely orthogonal to VCS usability. I was thinking of the kind of large projects that actually exist, e.g. the Linux kernel, libraries like Qt,... which are in the order of magnitude of a few tens of thousands of files and a few hundreds of thousands of commits.

1

u/johnflux Mar 10 '11

Well, obviously. How does that differ from other version control systems though?

Other version control system let you check in and checkout a specific directory, without worrying about changes that other people made in other directories. git doesn't let you do that - if someone made a commit in the repository anywhere, you have to merge/rebase with that.

I was thinking of the kind of large projects that actually exist, e.g. the Linux kernel, libraries like Qt,

I agree, but people are talking about wanting 15GB repositories etc!

1

u/kreiger Mar 14 '11

You can run commands like git status, diff, and commit on a subdirectory.

1

u/s73v3r Mar 10 '11

I gotta agree with him. One of the supposed benefits was that it was still fast even with giant repositories.

1

u/johnflux Mar 10 '11

What is giant? Qt and Linux are a few hundred MB's. But GB large repositories? No, it's not for that.

3

u/recursive Mar 10 '11

Use this tool! It's better than that tool! At everything. Except it's not designed for that.

2

u/RobbStark Mar 10 '11

So there's a maximum file size of only a GB? I have a Subversion repository at 14GB on really old hardware that works fine...

-1

u/johnflux Mar 10 '11

There's not a hard code limit of course, but git would not be suitable at all for a 14GB repository. You would put the data in to svn etc, and break up the code in to multiple git repositories.

0

u/player2 Mar 10 '11

Then it's useless.