monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] Re: bidirectional CVS gateway


From: Christof Petig
Subject: Re: [Monotone-devel] Re: bidirectional CVS gateway
Date: Tue, 14 Dec 2004 10:20:58 +0100
User-agent: Mozilla/5.0 (X11; U; Linux ppc; de-AT; rv:1.7.3) Gecko/20041007 Debian/1.7.3-5

graydon hoare schrieb:
Christof Petig wrote:

IIRC this monotone cert (or file) needs to store every CVS' file's revision for a MT revision. Perhaps I should start with tagged revisions and try to match them. [Does monotone support moving a tag to a different revision? IIRC no. This looks like to be the missing stone for a full synchronization. (synchronizing trees might still work)]


this sounds like the beginnings of a plan for how to do it. perhaps we could store a "CVS" attribute in .mt-attrs which notes which CVS version number each file is at. this would at least make the CVS->monotone job easier, since you could compare those numbers against a CVS working copy.

I still want to stay away from storing synchronization information in tree if possible.

This way there's no internal state which might get outdated (or misleading). If I find that synchronization speeds up by a factor of two or above I might add this caching later.

it seems to me that the monotone->CVS direction is the hard one, because monotone may literally have a history which is inexpressible in CVS terms. in that case you need to decide which part of monotone's history to elide (or decide to support linear monotone branches). also there is the problem of deciding who "wins" when there's divergence: if CVS diverges from monotone, monotone will be happy to just record that as a fork. if monotone diverges from CVS, CVS will want monotone to merge with its head before it lets us commit.

In any case a pull should precede a push to a CVS server. (perhaps pull even omits the second step)

hmm. I wonder. can our "branch linearizing process" just be the process of reconciling with a CVS server? that'd kill two birds with one stone, and relieve us of ever having to write code to manage the locking and unlocking of our "trunk".. then all the centralization and concurrency problems are just "CVS' problem" (or SVN's problem).

IMHO choosing a head for every branch (or choosing which branch is the main an which is a side fork) is a prerequisite to CVS push. You have to linearize before you can reconcile.

   Christof

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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