gnu-arch-users
[Top][All Lists]
Advanced

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

Re: [Gnu-arch-users] [BUG] FEATURE PLANS: submission branches


From: Bug Goo
Subject: Re: [Gnu-arch-users] [BUG] FEATURE PLANS: submission branches
Date: Wed, 16 Jun 2004 16:40:03 +0000

Created as bug 145

On Sat May 29 05:43:48 2004, Tom Lord wrote:
> 
> 
> Given any two versions, MAINLINE and BRANCH, we can trivially
> construct a third version (given `commit --base' --- see an earlier
> "FEATURE PLAN" post).
> 
> The purpose of the new version we'll construct is to optimize access
> to the deltas (a) from MAINLINE to BRANCH; and (b) from BRANCH to
> BRANCH.  We're particularly interested in optimizing those delta
> computations for the cases where access to the MAINLINE archive is
> fast, there is almost certainly a very heavily populated revision
> library for MAINLINE, there is at most a very sparsely populated
> revlib for BRANCH, and access to the BRANCH archive may be slow.
> 
> In other words, MAINLINE is a typical maintainer's tree;  BRANCH a
> typical contributors.
> 
> We're deriving a thrid branch that optimizes access to BRANCH for the
> guy running MAINLINE.   The aim is to spare the MAINLINE guy from
> _having_ to mirror BRANCH or having a heavily populated revision
> library for BRANCH.
> 
> Let's call the third branch SUBMITQ.
> 
> For every REV in BRANCH there is a corresponding REV in SUBMITQ.
> They're defined this way:
> 
> LET
> 
>   latest_mainline (REV) :=  "the latest revision of MAINLINE that
>                              revision REV of BASE is up-to-date with"
> 
> 
> THEN
> 
> * to create SUBMITQ--REV
> 
>   % tla get BRANCH--REV wd
>   % tla set-tree-version --dir wd MAINLINE
>   % tla commit --base `tla latest-mainline --dir dir` 
> 
>   The commit must produce BRANCH--REV, of course.
> 
> And that's pretty much it.
> 
> 
> Details:
> 
>   % tla update-submitq MAINLINE BRANCH 
> 
>   Ensure the existence and up-to-dateness of a 
>   submtiq branch for MAINLINE.
> 
>   If the name of BRANCH is
> 
>         proj--branch--x.y
> 
>   then the name of the new submitq is:
> 
>         proj--branch+submit_$(mangled MAINLINE)--x.y
> 
>   where `mangled' is a bijective mapping between valid archive names
>   and valid branch names.  The branch names in the range of `mangled'
>   may not include either of the characters "+" or ",").
> 
> 
> 
>   The revision builder is effected this way:
> 
>   Asked to build some BRANCH-REV, it asks the archive for a list
>   of branches in the same category.   From this, it can identify
>   the set of mainlines for which a submitq from BRANCH exists.
> 
>   Call that set of mainlines for which submitqs of branch are
>   available the SUBMITQS-OFFERED-FOR.
> 
>   Call the set of versions found in greedy libraries, REFERENCES-USED.
> 
>   The set SUBMITQ-CANDIDATES is (SUBMITQS-OFFERED-FOR intersect
>   REFERENCES-USED).
> 
>   The revision SUBMITQ-IDEAL is the version of the project tree this
>   command was invoked in (or given a --dir argument for).
> 
>   If SUBMITQ-IDEAL is a member of SUBMITQ-CANDIDATES
>   then SUBMITQ-WILL-USE := SUBMITQ-IDEAL
> 
>   otherwise if SUBMITQ-CANDIDATES is not empty 
>   then SUBMITQ-WILL-USE := randomly_choose (SUBMITQ-CANDIDATES)
> 
>   otherwise
>     SUBMITQ-WILL-USE := <undefined>
>   endif
> 
> 
>   If SUBMITQ-WILL-USE != <undefined> 
> 
>   then
>     let C be the revision of SUBMITQ-WILL-USE that SUBMITQ--REV
>     is tagged from.
> 
>     recursively ensure that C is in the revision library
> 
>     create SUBMITQ--REV by patching C with the changeset in
>     SUBMITQ--REV.
> 
>     tla remove-log the SUBMITQ version from the resulting tree
>   
>   else
>     build using just the summary branch (if any) for BRANCH
>     and BRANCH itself
> 
>   endif
> 
> 
> -t
> 
> 
> 
> _______________________________________________
> Gnu-arch-users mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gnu-arch-users
> 
> GNU arch home page:
> http://savannah.gnu.org/projects/gnu-arch/
> 




reply via email to

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