monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] Moving monotone databases


From: Derek Scherger
Subject: Re: [Monotone-devel] Moving monotone databases
Date: Sat, 20 Nov 2004 15:46:11 -0700
User-agent: Mozilla Thunderbird 0.8 (X11/20041108)

Nathaniel Smith wrote:
To make that a little more concrete --- it is mathematically
impossible to do exactly what you want, because 1) you can't modify
or get rid of a cert once it's issued, it's out there in everyone's
database, so you can't reach out and change/eliminate all the existing
branch certs, and 2) even if you just want to make duplicate branch
certs with the new name, you can't preserve trust information.

I think there is another perspective that we can consider when thinking about the general concept of deleting things from a local monotone database, rather than from "the one true universal monotone database".

It is possible to merge several small local databases into one larger one by pushing them all to one common monotone server.

It is also possible to split one large database containing several branches into several smaller local databases by creating fresh local databases and pulling specific branches into them. This is made somewhat difficult at the moment by the concept of collections and would be easier if/when collections are dropped and servers serve globs of branches.

So, "deleting a branch" might just mean "remove it from my local database, because I'm not interested in it any more". Clearly it is very difficult to possible to remove things from the universal monotone database once they have been distributed.

Based on this does it not seem somewhat reasonable to have a command like

        monotone db remove branch foobar

to remove all branch certs with the value foobar in a local database?

There are definitely wrinkles with this though. I beleive it is an underlying assumption that every revision in a monotone database *must* have at least one branch cert. So what should happen to revisions that have only the foobar branch cert? Perhaps they should be removed, but if they have any descendents, dealing with the ancestry implications might be rather interesting. Removing revisions might leave manifests around that are no longer referenced by any revision and removing manifests might leave files around that are no longer referenced by any manifest so these need to be handled carefully.

Personally, I think I would like the ability to do things locally like remove and rename branches and to remove keys and possibly the ability to find and remove unreferenced manifests and unreferenced files as well. However, having some sort of "monotone db fsck" command to find and fix the associated problems might be a good first step.

Cheers,
Derek




reply via email to

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