A free version control system that doesn't require storing local copies of every file, which doubles the space usage?
Is there a version control system (other than CVS) that can be configured to NOT keep local copies of files? Or maybe it just doesn't do it by design? Ideally, you can tweak this option by extension or file size.
For example, if I sometimes want to store large videos or images in SVN, the end result doubles the space usage on the client - and there's no way there.
I understand that one solution is not to transfer files like this, but my question is looking for this other solution.
For the record, I just tried Mercurial (Hg) and it also used twice as much space. I suspect Git will do the same.
PS I don't understand why SVN was unable to implement this support already. How easy it is - if the file is not stored locally, get it remotely, such as CVS. If the network is not available right now, show an error. /
source to share
You can use Bazaar with lightweight branch checkout. The working directory will contain only editable source code, while bzr will search the web for almost any operation. But you will find that even if you use regular branches, the branch with all history is usually smaller than the working tree.
source to share
SVN (and all other modern VCSs) were designed to store a lot of small text files, not a huge number of large binaries. Everyone keeps a local copy because it's cheap (most projects rarely use more than a few megabytes) and it makes almost all operations much faster (diff, status, local commit).
So you are using the wrong tool. If you need to manage images, try Picasa or something similar. Unfortunately, most image databases don't know how to save the history of image editing (which is a shame: I opened a bug with digikam years ago and it is still open).
I mean, it would be much better to keep the original image and just keep the settings for whatever edits you make plus the current "final" image. Everything in between could be recreated from the original image and the operations applied again. No VCS in the world can beat this in terms of efficiency ("Contrast + 10%" versus comparing two JPGs).
So your best bet today is either a professional photo editing tool (-> not free) or you have to copy and rename the photos you want to edit.
Yes, it sucks.
If you know this is a hammer, you will treat every problem like a nail.
source to share
This may sound silly (and it probably is), but once you've transferred your large file, why don't you just delete the file on disk? After all, VCS can definitely be used to recover a file when you need it.
I just tried this with Bazaar:
> ls -al
total 7123
drwxrwxrwx 1 user group 0 Oct 5 11:42 .
drwxrwxrwx 1 user group 0 Oct 5 11:22 ..
-rw-rw-rw- 1 user group 2469224 Aug 29 2007 Charles_Darwin_01.jpg
-rwxrwxrwx 1 user group 4076719 Sep 25 15:35 FileZilla-3.2.7.1.exe
-rw-rw-rw- 1 user group 746477 Aug 24 18:35 floorplan2008.png
> du -bs
7292420 .
> bzr init
Created a standalone tree (format: 2a)
REM Adding by name to override my own ignore rules, a simple `bzr add` is enough otherwise
> bzr add Charles_Darwin_01.jpg FileZilla-3.2.7.1.exe floorplan2008.png
adding Charles_Darwin_01.jpg
adding FileZilla-3.2.7.1.exe
adding floorplan2008.png
> bzr commit -m "Storing big binary files in repository"
Committing to: E:/temp/TestsVCS/Big/
added Charles_Darwin_01.jpg
added FileZilla-3.2.7.1.exe
added floorplan2008.png
Committed revision 1.
> du -bs
14552798 .
> rm Charles_Darwin_01.jpg FileZilla-3.2.7.1.exe floorplan2008.png
> du -bs
7260378 .
> bzr add Bazaar-quick-start-summary.pdf
adding Bazaar-quick-start-summary.pdf
> bzr commit -m "Adding good reference" Bazaar-quick-start-summary.pdf
Committing to: E:/temp/TestsVCS/Big/
added Bazaar-quick-start-summary.pdf
Committed revision 2.
> rm Bazaar-quick-start-summary.pdf
> du -bs
7666520 .
REM I want to work on a file
> bzr revert Charles_Darwin_01.jpg
N Charles_Darwin_01.jpg
REM I edited the file
> ls -l Charles_Darwin_01.jpg
-rw-rw-rw- 1 user group 2419048 Oct 5 11:52 Charles_Darwin_01.jpg
> bzr st
removed:
Bazaar-quick-start-summary.pdf
FileZilla-3.2.7.1.exe
floorplan2008.png
modified:
Charles_Darwin_01.jpg
REM I commit by name to avoid to commit the deletions,
REM but actually they can be commited without problem
> bzr commit -m "Changed just some IPTC tags" Charles_Darwin_01.jpg
Committing to: E:/temp/TestsVCS/Big/
modified Charles_Darwin_01.jpg
Committed revision 3.
> du -bs
12505785 .
> rm Charles_Darwin_01.jpg
> du -bs
10086737 .
REM + size of image + around 1KB of metadata
Note: on Windows, but I use UnxUtils commands, they come in handy from the command line.
source to share