monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] RFC: CVS sync design


From: Nathaniel Smith
Subject: Re: [Monotone-devel] RFC: CVS sync design
Date: Fri, 24 Dec 2004 01:00:07 -0800
User-agent: Mutt/1.5.6+20040907i

On Fri, Dec 24, 2004 at 12:44:12AM -0800, Nathaniel Smith wrote:
> here's my version of push:
>   - find the latest revision that corresponds to a cvs-manifest
>   - check to see whether that cvs-manifest is the tip of the branch we
>     wish to sync with; if not, error out, telling the user to perform
>     a pull and do some merging
>   - now pick a child of that revision, commit it to the CVS server,
>     and recurse

Actually, let me throw another thought out here to:  Is it really
useful to commit whole chains of history to CVS?  It would be
significantly simpler from our point of view to just take a single
revision, double-check that it's a descendent of the last sync'ed
revision, and then just commit that snapshot to the CVS repo,
completely ignoring intermediate versions.

The Monotone revision graph is going to be a superset of the stuff in
CVS anyway, so I don't feel too bad about collapsing some edges.

Also, this is much simpler to implement, completely sidestepping like the
last 3 paragraphs of my last email.  (Also some things I didn't
mention... like what do we do with discontinuous branches?  I.e.,
branches that have 'gaps', like A -> B -> C where A and C are in some
branch but B isn't... should B be pushed to the CVS server?)

Also, it might actually be required for some cases.  E.g., a typical
use case for CVS-synching functionality might be that if I'm working
on a project whose upstream uses CVS, then I want to use Monotone
locally to work out my changes, and then when I'm done push them to
the CVS repo.  But Monotone and CVS have very different criteria for
when a change should be committed; in Monotone it's perfectly common
to commit a change just locally, as a checkpoint while working.  In
CVS, though, commits always affect everyone globally, so you have many
projects where the policy is that if you commit a broken revision, you
are a Bad Bad Person.  Even if you then immediately commit a fixed
revision.  So I will be violating upstream policy if I simply push my
full Monotone graph into CVS!

-- Nathaniel

-- 
"...these, like all words, have single, decontextualized meanings: everyone
knows what each of these words means, everyone knows what constitutes an
instance of each of their referents.  Language is fixed.  Meaning is
certain.  Santa Claus comes down the chimney at midnight on December 24."
  -- The Language War, Robin Lakoff




reply via email to

[Prev in Thread] Current Thread [Next in Thread]