X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topbloke-formulae.git;a=blobdiff_plain;f=strategy.tex;h=e2bcf46fc50dfa768b2108b930b9728a0d39cae7;hp=9bed7cf094dd3f0a8940ff8d9a0338cb982e6b6a;hb=be08dfe44764573fcf4d903dbe74576e3762ee04;hpb=64a3ef281cdbfa63f1c306222d6e3e2b507d21a0 diff --git a/strategy.tex b/strategy.tex index 9bed7cf..e2bcf46 100644 --- a/strategy.tex +++ b/strategy.tex @@ -6,7 +6,7 @@ remove dependencies from patches. Broadly speaking the update proceeds as follows: during the Ranking phase we construct the intended graph of dependencies between patches -(which involves select a merge order for the base branch of each +(and incidentally select a merge order for the base branch of each patch). Then during the Traversal phase we walk that graph from the bottom up, constructing for each patch by a series of merges and other operations first a new base branch head commit and then a new tip @@ -50,13 +50,6 @@ the $\le$-maximal elements of $\bigcup_{J \in \set J} \pendsof{J}{\p}$ Convenience notation for $\bigforall_{E \in \pendsof{\set X}{\p}} E \le T$ -\item[ $\Gamma_{\pc}$ ] -The desired direct dependencies of $\pc$, a set of patches. - -\item[ $\allpatches$ ] -The set of all the patches we are dealing with (constructed -during the update algorithm). - %\item[ $\set E_{\pc}$ ] %$ \bigcup_i \pendsof{S_{\pc,i}}{\pc} $. %All the ends of $\pc$ in the sources. @@ -92,6 +85,21 @@ dependencies to use. This allows the specification of any desired \end{basedescript} +\stdsection{Important variables and values in the update algorithm} + +\begin{basedescript}{ +\desclabelwidth{5em} +\desclabelstyle{\nextlinelabel} +} +\item[ $\Gamma_{\pc}$ ] +The desired direct dependencies of $\pc$, a set of patches. + +\item[ $\allpatches$ ] +The set of all the patches we are dealing with (constructed +during the update algorithm). + +\end{basedescript} + \section{Ranking phase} We run the following algorithm: @@ -100,29 +108,29 @@ We run the following algorithm: \item Repeatedly: \begin{enumerate} \item Clear out the graph $\hasdirdep$ so it has no edges. -\item Execute {\bf Rank-Recurse}($\pc_0$) +\item Execute $\alg{Rank-Recurse}(\pc_0)$ \item Until $\allpatches$ remains unchanged. \end{enumerate} \end{enumerate} -{\bf Rank-Recurse}($\pc$) is: +$\alg{Rank-Recurse}(\pc)$ is: \begin{enumerate} -\item If we have already done {\bf Rank-Recurse}($\pc$) in this +\item If we have already done $\alg{Rank-Recurse}(\pc)$ in this ranking iteration, do nothing. Otherwise: \item Add $\pc$ to $\allpatches$ if it is not there already. -\item Let +\item Set $$ - \set S = h(\pcn) + \set S \iassign h(\pcn) \cup \bigcup_{\p \in \allpatches} \bigcup_{H \in h(\pn) \lor H \in h(\py)} \{ \baseof{E} \; | \; E \in \pendsof{H}{\pcy} \} $$ -and $W = w(h(\pcn))$ +and $W \iassign w(h(\pcn))$ \item While $\exists_{S \in \set S} S \ge W$, update $W \assign S$ and $\set S \assign \set S \, \backslash \{ S \}$ @@ -130,16 +138,16 @@ update $W \assign S$ and $\set S \assign \set S \, \backslash \{ S \}$ (This will often remove $W$ from $\set S$. Afterwards, $\set S$ is a collection of heads to be merged into $W$.) -\item Choose an order of $\set S$, $S_i$ for $i=1 \ldots n$. +\item Choose an ordering of $\set S$, $S_i$ for $i=1 \ldots n$. \item For each $S_i$ in turn, choose a corresponding $M_i$ such that $$ M_i \le S_i \land \left[ - M_i \le W \lor \bigexists_{S_i, j