compressed weaves, and revision.weave

John A Meinel john at arbash-meinel.com
Mon Oct 24 21:41:30 BST 2005


Aaron Bentley wrote:
> John A Meinel wrote:
>
>>>Only if you actually did real ancestry. The current weave format only
>>>shares lines between parents and their children.
>
>
> Okay, I get it now.  Neat hack.
>
>
>>>I could certainly make it "BASE-not-really-a-revision-please-ignore-me".
>
>
> I think something like that would be safer.  Though even Arch's
> !!!nothing-should-depend-on-this field did manage to leak out.

I'm hoping to contain this into just that one file. Nobody should really
use that file to get ancestry or anything like that.

>
>
>>>The reason I didn't want to do real ancestry is because you certainly
>>>could never say that all of the ancestry will be present. I might sign
>>>my entries, but you wouldn't sign yours, etc.
>
>
> I think that's only a problem if you store something for all the
> revisions.  It would work if you stored only the last-signed revision,
> just as we only store the last-modified revision for file contents.
>

I just didn't want to have the real ancestry headers in the weave. (For
each entry in a weave you have a certain number of parents, which must
be present).

You could jump all the way back to when something was actually signed,
but then what happens if someone creates a signature for an older
revision? (You can "bzr re-sign" with the latest bzr.dev tree, and have
been able to for a while).

>
>>>Do you want me to changed the name?
>
>
> Yeah, if we go ahead with your idea, it would be safest to avoid any
> valid revision ids, I think.

I'm fine with that.

>
>
>>>Right now I'm having the text for the "null:" signature be the sha1 hash
>>>of nothing.
>
>
> Another interpretation of the null revision would be:
> <revision committer="" format="5"
> inventory_sha1="e89199a707b4b58b8d48b0681fc20462612738e3"
> revision_id="null:" timestamp="0">
> <message></message>
> </revision>
>
> (that sha1 is wrong, though.)

Actually, the signatures are always for the Testaments. So we could try
and create a fake testament.

I'm not sure if you've looked at the code. Basically, rather than
signing the xml, they generate a line-wise description of the revision,
including all of the inventory, and then sign that.

But they have a testament "long-form" which is all of the text, and a
testament "short-form" which is just the sha1 hash of the long form.

In general, the later is what is used. Though I guess if we did real
ancestry, a weave would compress the long form (just as it compresses
revision entries and inventory entries), so we wouldn't waste as much space.

John
=:->

>
> Aaron
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 253 bytes
Desc: OpenPGP digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20051024/dfb5931e/attachment.pgp 


More information about the bazaar mailing list