views:

2767

answers:

3

We need to store binary files (mostly MS Word documents, ranging from a couple of KB to a couple of MB in size) in a version control repository with over 100 "projects". Currently we use Visual Source Safe but there are some problems, the database is crashing sometimes and the access is slow.

We are considering moving to Git or Subversion and we were wondering which one would be a better option for handling binary files.

+7  A: 

We use git for everything. Literally. Even our administrative office's entire file share is kept in git (the sysadmin commits it each day).

That share is almost entirely binary files -- word documents, quickbooks, etc...

We have a 100% accurate history of everything. And with an occasional git gc it keeps the repo size manageable.

Also: git is really fast. When we switched from SVN, git was ~ 10x faster than subversion in our usage patterns (large projects with 20,000+ files).

gahooa
Do you use any visual tool to work with it? The users of our repository are mostly business analysts that will scramble in horror if we offer anything else.
Aleris
I have use msysgit on windows. But not enough to tell you if it is very easy or not. TortoiseSVN is quite easy to use, I know that from experience.
gahooa
Which size is your Git repository for the administrative office?
FerranB
@ FerranB: more than 2GB currently.
gahooa
There are also visual tools for Git à-la TortoiseSVN: TortoiseGit and GitCheetah.
RFelix
+11  A: 
  • Subversion attempts to automatically detect binary files (see SVN FAQ). If this fails, you have to designate them yourself (you also can't change SVN's detection method).

  • Git does the same, and you can specify which files to automatically treat as binaries by including a .gitattributes file in your source repository.

  • Here is a comparison of Git and SVN's binary file handling. (The site may be down right now; if so, try the Google cache.)

  • Here is what some other Stack Overflow members have been doing with Git and binary files.

Hope this helps!

pianoman
+7  A: 

Subversion, definitely. Today, TortoiseSVN provides Explorer-integrated navigation of Subversion repositories, and most particularly it supports diffing of arbitrary Word documents (it defers the diff to Word itself, but the feature works really well).

There's no reason why a TortoiseGit can't have this same feature, but such a thing doesn't quite exist in a stable form today. Fortunately, it's easy to migrate a Subversion repository to Git anytime in the future.

Greg Hewgill