Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jan 2004 12:35:59 -0500
From:      Chris BeHanna <chris@behanna.org>
To:        hackers@freebsd.org
Subject:   Re: Where is FreeBSD going?
Message-ID:  <200401121235.59788.chris@behanna.org>
In-Reply-To: <20040108180552.GA17378@opiate.soulwax.net>
References:  <Pine.NEB.3.96L.1040107151556.6025A-100000@fledge.watson.org> <1073582974.37229.8.camel@herring.nlsystems.com> <20040108180552.GA17378@opiate.soulwax.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 08 January 2004 13:05, Munish Chopra wrote:
> On 2004-01-08 17:29 +0000, Doug Rabson wrote:
>
> [...]
>
> > The three main showstoppers for moving FreeBSD to subversion would be:
> >
> > 1. A replacement for cvsup. Probably quite doable using svnadmin
> >    dump and load.
> > 2. Support for $FreeBSD$ - user-specified keywords are not supported
> >    and won't be until after svn-1.0 by the looks of things.
> > 3. Converting the repository. This is a tricky one - I tried the
> >    current version of the migration scripts and they barfed and died
> >    pretty quickly. Still, I'm pretty sure that the svn developers
> >    are planning to fix most of those problems. From mailing-list
> >    archives, it appears that they are using our cvs tree as test
> >    material for the migration scripts.
>
> [...cvs2svn.py scheduled for 1.0...]

    What about "arch"?  I have it installed, but $realjob has
prevented me from looking at it.

    And, unless I misunderstand, Perforce is available for free for
non-profits, and the client is a free download.  Other than a desire
to be "pure" and use open source exclusively, what objection is there
to Perforce?  (And even considering that desire, Perforce is built
upon open source:  RCS and BDB, if I understand correctly).

    Speaking as a former CVS repo-meister (for a company that
evaporated out from under me), Perforce really is a better mousetrap.
No more, "I updated in the middle of a commit" problem, because
commits are transactional.  No more "Oh, god, this merge sucks",
because Perforce keeps track of what was merged when, and where.  The
latest versions rather painlessly support cross-branch merges, too
(i.e., pulling changes from one branch to another without having to
first push up to and pull down from a common ancestor).  Triggers can
be written to prevent inadvertent DoSes
(p4 integ -I //depot/branch1/... //depot/branch2/...) and to do
submit-time checks.

    Risks are more easily mitigated with branches, and pulling/pushing
of selected changes is MUCH easier (no more need to generate and apply
patches by hand).  Generating weird-elmo hybrid mappings of the tree
is also a snap, and the repo itself doesn't bloat as badly because P4
uses its database to keep track of where histories go, rather than
actually physically copy a file to move it in the repo.

    CVS:

        cp /CVSROOT/foo/bar /CVSROOT/foo/baz
        cvs delete foo/bar
        cvs commit

        (but bar,v lives forever, if you want to keep the change
        history and/or if you ever want to check out an old tagged
        revision of the tree)

    Perforce:

        p4 integ -t foo/bar foo/baz
        p4 delete foo/bar
        p4 submit

        (foo/baz doesn't actually physically exist.  P4 keeps a DB
        record that foo/baz points to foo/bar, and this operation is
        only visible in the branch in which it was done, until that
        branch is pushed up to its parent)

        With Perforce, no repo-meister intervention is needed.

        Add in the ability to use local proxies to cache
        frequently-fetched files and revisions, and you have a winner,
        IMHO.

    I'm starting to sound like a spokesman.  I'm not--just a *very*
satisfied user.

-- 
Chris BeHanna
Software Engineer                   (Remove "bogus" before responding.)
chris@bogus.behanna.org
                 Turning coffee into software since 1990.




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