Question

Our team decided that is time to finally leave Serena PVCS behind ( yay!! ) and now we have to decide between git or SVN. But even after reading some outdated docs and posts regarding how git handle bin files i couldn't find a direct answer about this topic. So, since one of our repo's have 50gb, and 90% of then are .doc, .xls, .zip ( each one from 1mb to 20mb from version 1.0 to 1.178), i'm not secure to turn my boat to the Git Island.

what i found so far is:

https://help.github.com/articles/working-with-large-files

http://stevehanov.ca/blog/index.php?id=50

https://news.ycombinator.com/item?id=3548824

Most of our "geeks" ( recent born developers with less than 1y out of the university ) are crying out for git because is "mainstream" but i dont think git would solve the problem this type of repo. I mean, we allready manage some repos using git ( for java source mainly ) but i'm struggling to decided for which direction should we aim.

Also, besides Git/svn/Mercurial, is there any other option for bin files ?

Thanks in advance.

EDIT: Please understand that i'm not going into "gorila vs shark" philosophy , i'm just trying to get more inputs in order to decide if i should choose git over svn.

Was it helpful?

Solution

most of our "geeks"

are not geeks, but brainless Git-fanboys. Ignore juniors totally, they must not have voice

From personal experience I can conclude that both systems handle big binaries almost equally mediocre with with a slight advantage from SVN (for pre-1.7 versions, now I don't see at Git side at all):

  • the same modified file, committed to repository, increased the size of the SVN repository slightly smaller than Git-repository
  • I never had broken SVN-repo with big files, with Git it happened noticeable amount of time

For your case best choice will be Mercurial with LargeFiles extensions (and special differs|mergers|viewers per file-types, encoders|decoders are additional bonuses, which Git|SVN can't offer)

OTHER TIPS

Git doesn't work that well with binaries, since it doesn't compress them that well. They'll end up taking a massive amount of space in your Git repo history. I had first-hand experience with this; when I added and removed a couple of small pictures, it took ages for me to reclone the repository.

For SVN, since it's centralised, it doesn't really affect developers as you don't need the whole history of the repository anyway (in most cases). As for space taken up on the server, I am not too certain about that.

It would be best to seek an alternative method to upload large binaries. Perhaps the best way would be to upload the files to an alternative source. SVN should be fine with binaries. As for Git, don't ever use it with binaries. If you must, keep the binaries in a seperate repository.

But since you don't, you should probably use SVN.


Links for further reading:

Git and binary data

You could use git-lfs (Git Large File Storage) for this.

From the git-lfs page linked above:

Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server ...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top