Giorgos Keramidas wrote:
On Fri, 21 Mar 2008 16:10:22 -0700, Xin LI <[EMAIL PROTECTED]> 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 :)

Ah... Ok I think I should have mentioned the purpose of the system. It is supposed to be used in a CMS system, and the storage program will be used as one auxiliary backend where rendered pages are being stored.

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.

Thanks for all these information. I have tried svn and hg but neither is "just fit" and both have good stuff and drawbacks. I have even tried to use cvsup/cvs in a small system when I was in university and it served them well for many years, however I think it would not work well for larger systems.

For now I am more inclined to use hg (if not using some home grown system as this is not exactly source code version management and a lot of complexity can be thus just skipped) but I think I need to find out how well it would work with 'pull+update' on large repositories, the largest hg repository I am aware of right now, is less than 1GB and the potential size of the repository I would use will be larger than that and grow from time to time.

I think it's a good point that speed would vary when the repository is being stored locally (git and hg) and remotely (svn), also speed of synchronization between several hosts would be important as well.

Cheers,
--
Xin LI <[EMAIL PROTECTED]>        http://www.delphij.net/
FreeBSD - The Power to Serve!
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to