|
From: | Markus Schiltknecht |
Subject: | Re: [Monotone-devel] partial pull #2 - gaps instead of a single horizon |
Date: | Fri, 25 May 2007 15:17:39 +0200 |
User-agent: | Icedove 1.5.0.10 (X11/20070329) |
Hi, Timothy Brownawell wrote:
How special does it have to be? The only differences I see are that (1) it has a different revision_id, so we need something signed by the server saying the most recent revision that it replaces, and (2) it can have >2 parents.
Revision id different from what? Different from the hash of the textual sentinel description, sure. But the revision id of a sentinel should be exactly the revision id it stands for, i.e. the first revision above the horizon - or the newest or whatever you call it. That only blows some sanity checks, but that's easily fixable.
Then, >2 parents, could be, yes. Another additional requirement is probably having a height larger than one, but I don't know the height caching stuff well enough to be able to tell. What I'd like to achieve is, being able to add real revisions by simply adding them and deleting the sentinel, without having to regenerate caches.
I think there are really only problems with *generating* revisions with multiple ancestors; the only reason we can't have them in history is because we chose to have the sanity checking not allow it.
Uhm.. I remember Nathaniel saying, that mark merge might be tricky with multiple (>2) ancestors. And as we would have to be able to provide a roster for the gap, we need to provide those markings.
How much do we need to preserve? We currently either need any revisions in which files were added or an assertion by the server that certain apparently different files are really the same, and maybe some intermediate nodes to preserve some amount of the graph shape (not *necessary*, but useful for having reasonable common ancestors for text merge).
Uhm.. dunno.But theoretically, think of replacing all revs in a gap with a single revision. You could have committed it all in one go, no? That's how I'm thinking the sentinel could 'trick' the merge algorithm (and a lot of the rest of the monotone machinery).
How much do we need to preserve? Well, all the files which were added in *any* of the revisions in the gap. But none of the revision texts themselves. That's the goal of partial pull: only pull the files and not care about historical information.
Regards Markus
[Prev in Thread] | Current Thread | [Next in Thread] |