On Wed, Jul 16, 2014 at 05:21:50AM -0700, Dominik Rauch wrote: > Hi! > > Although I've read a lot of resources concerning the topic "Handling > binary files with Git" I'm still confused. Hopefully you can help me > to find definitive answers :-) > > If you ask people about "Git and binary files" the answers are > often: "Git is a SCM and not a backup solution" or "dependences > should be referenced via Maven/NuGet/etc. only". Regarding the > second argument: it is not always possible for us to do that, and > the situation is (unfortunately) not going to change anytime soon. > Therefore we want to know Git's limits before switching from > Subversion to Git. > > Quantity of binary data: Some of our projects have up to 500MB of > library dependencies which are updated (in parts) every two to three > weeks. However, the files are not too big by themselves, they are > around 250 files ranging from 200KB to 10MB. > > Main question: > The existence of tools like git-annex, git-fat, git-media, etc. > hints that Git has problems with binary files in some way. Although > I've studied as much internal docs as I could find, I could not find > a clue why Git should handle binary files any worse than Subversion > did. - Yes the repository size may get huge, however, initial > cloning is a one-time process and does not affect our company too > much. > > Does Git even have a problem with binary files? What's the problem > exactly? How does Subversion handle this in a better way? Is it > about single files which are very huge (e.g. 3D models with more > than 500MB file size) or are many small binary files a problem as > well? Is it about initial cloning time only or does it affect the > everyday work (committing, branching, etc.) as well?
Let me make an attempt at turning this around a little. Why do you look at your VCS to solve a build problem? Your project has external dependencies on libraries. You wish to keep build times down by providing pre-built and vetted versions of these libraries. Exactly which version to use is a build-time problem, why would you want to use a VCS to encode your build configuration? Why not keep the build configuration nearer the build instructions (e.g. in a make file, or use CMake's ExternalData)? And why rely on your VCS to distribute your external dependencies, why not use rsync (to distribute either the latest or all versions) or CMake's ExternalData? /M -- Magnus Therning OpenPGP: 0xAB4DFBA4 email: mag...@therning.org jabber: mag...@therning.org twitter: magthe http://therning.org/magnus In a hierarchy, every employee tends to rise to his level of incompetence. -- The Peter Principle
pgpYfwQnY7o40.pgp
Description: PGP signature