From owner-freebsd-hackers@FreeBSD.ORG Sat Mar 22 00:10:35 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B33F2106566C for ; Sat, 22 Mar 2008 00:10:35 +0000 (UTC) (envelope-from keramida@ceid.upatras.gr) Received: from mx-out-03.forthnet.gr (mx-out.forthnet.gr [193.92.150.104]) by mx1.freebsd.org (Postfix) with ESMTP id 148B38FC19 for ; Sat, 22 Mar 2008 00:10:34 +0000 (UTC) (envelope-from keramida@ceid.upatras.gr) Received: from mx-av-05.forthnet.gr (mx-av.forthnet.gr [193.92.150.27]) by mx-out-03.forthnet.gr (8.13.8/8.13.8) with ESMTP id m2M0AVmF023055; Sat, 22 Mar 2008 02:10:31 +0200 Received: from MX-IN-05.forthnet.gr (mx-in-05.forthnet.gr [193.92.150.32]) by mx-av-05.forthnet.gr (8.14.2/8.14.2) with ESMTP id m2M0ADJv009587; Sat, 22 Mar 2008 02:10:13 +0200 Received: from kobe.laptop (adsl44-54.kln.forthnet.gr [77.49.171.54]) by MX-IN-05.forthnet.gr (8.14.2/8.14.2) with ESMTP id m2M0A4Zr016208; Sat, 22 Mar 2008 02:10:06 +0200 Authentication-Results: MX-IN-05.forthnet.gr smtp.mail=keramida@ceid.upatras.gr; spf=neutral Authentication-Results: MX-IN-05.forthnet.gr header.from=keramida@ceid.upatras.gr; sender-id=neutral Received: from kobe.laptop (kobe.laptop [127.0.0.1]) by kobe.laptop (8.14.2/8.14.2) with ESMTP id m2M0A3lt013137; Sat, 22 Mar 2008 02:10:03 +0200 (EET) (envelope-from keramida@ceid.upatras.gr) Received: (from keramida@localhost) by kobe.laptop (8.14.2/8.14.2/Submit) id m2M0A16J013133; Sat, 22 Mar 2008 02:10:01 +0200 (EET) (envelope-from keramida@ceid.upatras.gr) From: Giorgos Keramidas To: d@delphij.net References: <47E4405E.2080609@delphij.net> Date: Sat, 22 Mar 2008 02:10:01 +0200 In-Reply-To: <47E4405E.2080609@delphij.net> (Xin LI's message of "Fri, 21 Mar 2008 16:10:22 -0700") Message-ID: <874pazpqjq.fsf@kobe.laptop> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: freebsd-hackers@freebsd.org Subject: Re: Some versioned storage program? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Mar 2008 00:10:35 -0000 On Fri, 21 Mar 2008 16:10:22 -0700, Xin LI 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