I’m working on a website for a photographer, the whole code is just a few files, and whole repository is a few MBs without the actual photographs.
But, when I add the actual photographs to git and commit, then the repository jumps to 75 MBs. Considering the photos will be updated, the size of the repository is going to grow big as photos gets updated. I know I’m doing something very wrong.
Please, share your methods, for managing big binary files separate from source code, and still maintain dependencies.
PS: I don’t use a db currently, all are plain text files.
0
You might consider storing images in a submodule. This would allow you to keep code and images in separate repos.
My company uses submodules for our shared libraries, and though at times a little clunky, it may be the solution you’re looking for.
The photos are original work, they need to be stored safely and reliably.
Options are storing revisions in a file name/folder or zipped tarballs with dates and times convention for each revision, a proper revision control or something in between. It is a fact that, beyond circumventing the first few laws of thermodynamics, as photos are changed and files added, the stored data will grow.
If you are prepared to discard old versions of the files to save disk space or otherwise reduce the size of the files you store, then GIT (and most other rev control tools) is not what you want.
If you want the certainty and control that a revision control tool provides, then you have to spend the money – Find the $100 and buy a 2 terabyte disk, I am sure your photographer would rather you do that than ask him to got an retake all the photos you just lost and cannot recover because you had a “whoops” moment at the keyboard.
As previously suggested, separate repo or sub modules will offer a nice solution of separating the data (photos) from the program source.
Whatever you do – make sure the photos are reliably backed up. GIT just happens to be wonderful for this task.
2
75MB is not a problem for git, but you might want to check out git-annex which looks like it can do what you want.
For web applications you may want to consider the Google Picasa services.
Or alternatevly manage your picture gallery in the Cloud. You may simply store the access link to that pictures, while getting them on your pages.