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

Attachment: pgpYfwQnY7o40.pgp
Description: PGP signature

Reply via email to