Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Mar 2008 02:10:01 +0200
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        d@delphij.net
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Some versioned storage program?
Message-ID:  <874pazpqjq.fsf@kobe.laptop>
In-Reply-To: <47E4405E.2080609@delphij.net> (Xin LI's message of "Fri, 21 Mar 2008 16:10:22 -0700")
References:  <47E4405E.2080609@delphij.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 21 Mar 2008 16:10:22 -0700, Xin LI <delphij@delphij.net> wrote:
> Hi, folks,
>
> I'm looking for some versioned storage program that can fulfill the
> following requirements:
>
>  - Open source/Free Software that can run on FreeBSD, or not far
>    (i.e. on other POSIX OS)
>  - Support of atomic commit/rollback.
>  - Fast checkin time (At least,  when added/changed files are explicitly
>    specified).
>  - Fast update time (i.e. something like 'cvsup -s' that makes it
>    possible to trust bookkeeping file rather than stat'ing every files)
>  - Scalable for a large number of files, directories and revisions. Say,
>    it is not acceptable for it to store a zillion of revisions as
>    individual files within one directory.
>  - Ideally it can support some sort of "hook" functions upon commit so
>    that changes can be notified in some way such as e-mail.
>  - Ideally it can support fast export of a snapshot for HEAD and
>    "nearby" revision like HEAD - 1, etc.
>
> I think what I need is some SCM software like subversion or hg, but I do
> not know if there is some superior stuff that matches these requirements
> better.  Any other suggestions?

Before you start using Hg, Git or Subversion it may be worth
experimenting a bit with them.  My apologies if you _have_ already and
the previous sentence sounds patronising.  All I'm saying is that they
all have a fair share of good, not so good, or even bad aspects.  So it
would be nice to have tried them all a bit and pick the one that seems
like the best fit for the job at hand :)

To provide a few starting points:

- Subversion, Git and Hg, all run on FreeBSD
- They support 'changesets' as the basic model of storing commits
- Commit speed varies a bit.  For locally stored 'workspaces', Git and
  Hg seem to be more or less equally fast, with Subversion being a close
  second
- Update times tend to vary a bit too.  Hg and Git will blow Subversion
  away on locally stored repositories, but they might suck a bit on NFS
  workspaces
- Storing individual revisions as 'a zillion directory entries in a
  single tree' seem to point at Subversion.  Have you already tried it,
  and found that it doesn't scale for your sort of work?  It is used by
  many large-ish projects, so it would be surprising but not unrealistic
  to have scalability issues after a few million commits
- Hooks _are_ supported by Subversion, Git and Hg (others too)
- Checkout speed (and `export' speed) is pretty fast in Git and Hg.
  Subversion is a bit slower, but still usable.  Changeset support is a
  nice feature, because it doesn't matter if your `export' run takes 1.5
  minutes instead of 20 seconds.  When a given changeset is exported in
  any of svn/git/hg you _never_ get a mix of file revisions from
  changesets ${FOO} ... ${FOO+j} for some arbitrarily random value of
  'j', because 'j+k' commits happened in the mean time.

Before you _do_ embark on the journey of using a VCS for storing a bunch
of files, it would be nice to stop for a moment and consider if you need
one.  If you do, there _are_ options, and they are definitely not
limited to the three systems mentioned so far.

HTH,
Giorgos




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?874pazpqjq.fsf>