Version control system better suted than SVN
Chanoch (Ken) Bloom
kbloom at gmail.com
Sun Apr 19 22:03:34 CEST 2009
On Sat, 2009-04-18 at 19:48 +0100, hessiess at hessiess.com wrote:
> I have recently started storing all of my data (not config files) in a
> subversion repository. Previously I was using unison to synchronise my two
> computers, but annoyingly it won't work over the collages proxy server due
> to SSH being blocked. SVN however does work because it can be used over
> HTTPS, with the added advantage of version control, reducing the chance of
> loosing data and also the need to store files which `may be useful
> sometime'.
>
> One problem I have had with SVN is it storing 2 copies of everything in
> the working copy, which in the case of my home directory is much more
> space than I actually have available on my laptop. So are there any
> version control systems which, like SVN store all revision history server
> side and work over HTTPS, but unlike SVN, only keep one copy of each file
> in a working copy.
I think bzr may solve your disk space problem, though it reintroduces
the protocol problem, since its http and https options are read only.
(ftp operation might work for you though.)
A full summary of your options:
* CVS only checks out one copy of the files involved. These
revision control systems have severe drawbacks for everyday use,
though you might look at Joey Hess' article "At home in
$CVS" (http://kitenet.net/~joey/cvshome/) to see that it can be
done. All operations (including diff) have to go out to the
network. The CVS directory in your working copy, though ugly, is
very lightweight. (See
http://www.linuxdevcenter.com/pub/a/linux/2002/01/03/cvs_intro.html)
* Subversion keeps two copies as you have mentioned.
* SVK keeps one copy in your working directory, but it also keeps
a local repository somewhere which probably has the same
drawbacks as your subversion issue (though the local repository
could in principle be located on a different partition if that
helps your problem.)
* Git keeps a local repository with full history in your working
directory. This means at least two copies of everything are
stored. [The amount of history can be controlled by using the
--depth option when you pull, but this can cause pushing and
merges to fail. The git manpage warns of this, but in practice
the warnings are a bit strict compared to the actual behavior,
and you can always fetch the history further back if you have a
problem, and then things should work. If you use the --depth
option, the amount of history will stored locally will grow over
time anyway. There is no provision for forgetting old history to
save space, short of blowing away your local repository and
cloning anew. The --depth option can't get you any smaller than
two copies of everything.]
* Monotone and Mercurial seem to work like git. They may not
support limiting the amount of history you grab on an initial
pull.
* Darcs supports --lazy checkouts, which "get patch files only as
needed". (They advertise this right on their home page, when
tell you how to get their source code from their own darcs
repository.) I think it might keep patches around as it decides
it needs them, meaning that your locally stored history may grow
backwards in time as well as forwards, as you do more stuff with
your working directory.
* Bzr supports history-less checkouts. See
http://doc.bazaar-vcs.org/latest/en/user-guide/index.html#getting-a-lightweight-checkout They also discuss other strategies for saving disk space when cloning repositories.
--
Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://lists.madduck.net/pipermail/vcs-home/attachments/20090419/8daeccac/attachment.pgp>
More information about the vcs-home
mailing list