[Top][All Lists]

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

[Monotone-devel] New cvssync.attrs branch

From: William Uther
Subject: [Monotone-devel] New cvssync.attrs branch
Date: Mon, 19 Mar 2007 22:48:56 +1100

Hi all,

On the weekend I made a new branch:  net.venge.monotone.cvssync.attrs

based on a previous cvssync branch: net.venge.monotone.cvssync.refactor.

The parent .refactor branch had some fairly major bugs in its sync data storage. They only show up after a little bit of use, but are hard to recover from (the best sort of bugs :).

The new cvssync.attrs branch changes the way syncing data is stored. As suggested by the name, it keeps them attributes attached to the files (as encouraged by irc denizens). There is a simple cert attached to revisions where the attrs are known to be correct. This has one major effect in that mtn_cvs has to commit a new monotone revision on a push to cvs (to update the sync information). (At the moment I only commit one of these sync revisions for a single push, no matter how many mtn revisions were transferred to cvs.) This means a "push" is not longer a 'const' operation on your db, but otherwise cleans up the sync-data handling a lot.

At the moment I'm using similar attributes to the .refactor branch to store the sync information (<dom>:module, <dom>:root and <dom>:branch on the root dir, then <dom>:revision, <dom>:sha1 and <dom>:keywords on individual files. <dom> is the --domain argument and defaults to "cvs"). And I'm using my own simple cert to mark valid sync: mtn-cvs- sync=<dom>. Is there some other standard I should change to?

The new branch passes most of the cvssync unit tests (I haven't updated any of the 'takeover' commands yet, and the two more complex ones of those fail). The new branch passes more of the tests on basic push/pull functionality than the .refactor branch.

Does anyone use the takeover functionality? I'm tempted to take it out rather than fix it.

Anyway, the branch (apart from takeover functionality) is open for testing.

This branch works with the mainline binary (as does the .refactor branch I believe). You can simply check it out, make and make install to compile against a slightly older codebase, or you can compile it against mainline like this:

 - check out a mainline workspace
 - check out a n.v.m.cvssync.attrs workspace
- Apply the mtn_cvs/mainline.patch from the .attrs workspace to the mainline workspace - Copy or link the mtn_cvs directory across so it is in the mainline workspace
 - make and make install in the top mainline directory.
- make check doesn't seem to be recursive. You can run it in the mtn_cvs directory to run those tests though.

Testing appreciated, but be careful with it at this stage. I'm rather new to the code base and this is a pretty major change.


Will           :-}

reply via email to

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