arx-users
[Top][All Lists]
Advanced

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

Re: [Arx-users] Repo format take II


From: Walter Landry
Subject: Re: [Arx-users] Repo format take II
Date: Mon, 19 Dec 2005 23:43:58 -0800 (PST)

Walter Landry <address@hidden> wrote:
> 1) Cached revisions.  These are directories named by the short hash
>    and sequence number N.  Inside the directories are the files
>    rev.tgz, log, and log.sig.  rev.tgz is the tar'd gzip'd copy of the
>    complete project tree.  log is the log message etc. and the hash of
>    the revision.  log.sig is the gpg signature of the log message.
> 
>    If N!=0, then there is also a URL file containing the complete
>    branch name of previous revisions.  If the branches are located in
>    the same repo, then the repo location is omitted.
> 
>    repo/branch/0/<hash><N>/
>    repo/branch/0/<hash><N>/rev.tgz
>    repo/branch/0/<hash><N>/log
>    repo/branch/0/<hash><N>/log.sig
>    repo/branch/0/<hash><N>/URL

I decided that URL is NEEDLESSLY CAPITALIZED, so I am changing it to
"url".

<snip>
> 6) Tag revisions.  These are directories named like patch revisions,
>    but inside there is log, log.sig, and URL.  The log file has all of
>    the hashes and directory locations for tagged branches.  It does
>    not have the hash of the revision.  The hash of the revision is
>    actually the hash of the log file itself.  The URL file contains a
>    serialized list of complete branch names for the tagged branches.
>    If the branch is stored inside the same repo, then the repo part is
>    ommitted.

Same thing here (URL -> url).  But I also realized that there is some
subtlety when signing these kinds of revisions.  In particular, ArX
has "floating" tags, which always point to the latest revision of a
particular branch.  That means that you can't sign a particular
revision.  I decided that what you are really expressing is that you
want whatever is the child of whatever is currently in the repo.
Moreover, it has to be signed by whomever is currently signing the
repo.

So a floating tag revision will have two hashes: the hash of the
latest revision of that branch, and a hash of the public keys of that
repo.  This means that creating and getting a floating tag can fail if
there is more than one microbranch currently active.

This allows us to change the url file without compromising security.

Cheers,
Walter




reply via email to

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