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. /

+2


source to share


6 answers


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.



+3


source


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.

+2


source


The only one I used that didn't take up extra space to use was the universally hated visual sourcesafe.

SoureSafe 6.0 only takes overhead for source binding.

However, I consider SourceSafe to be a source destruction system, so I don't recommend it at all.

0


source


ClearCase only stores locally modified files in your workspace (called a view in their naming convention).

0


source


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.

0


source


How big is your image library? These days, I think it would be cheaper to buy another 80GB hard drive - if you can find one on the market - than to buy a source control pack with disk space saving features.

-1


source







All Articles