<div dir="ltr">Hi Chris,<div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jun 19, 2014 at 8:38 AM, Chris Muller <span dir="ltr">&lt;<a href="mailto:ma.chris.m@gmail.com" target="_blank">ma.chris.m@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">&gt;&gt; I&#39;m having trouble understanding the contexts of those examples.  What<br>

&gt;&gt; am I going to do with my package-cache that has branches saving the<br>
&gt;&gt; day for me?  Sending a version in an e-mail?  I would probably send a<br>
&gt;&gt; link to a config or a repository.  Even if I did send a MCZ Version in<br>
&gt;&gt; an email, the email would state what its for, any branch tag would be<br>
&gt;&gt; redundant..<br>
&gt;&gt;<br>
&gt;&gt; PS -- And, heck, even just the _contextual_ info (e.g., time and<br>
&gt;&gt; author) kinda gives it away anyway!  Frank already said if there&#39;s<br>
&gt;&gt; more than 2 branches going on simultaneously, that&#39;s a problem.  So,<br>
&gt;&gt; KNOWING what Eliot is working on these last months, if you see<br>
&gt;&gt; &quot;Collections-cmm.521&quot; and &quot;Collections-eem.523&quot;, which one do you<br>
&gt;&gt; suppose is for Spur?<br>
&gt;<br>
&gt; That&#39;s the issue.  If we have two repositories, trunk &amp; spur, then they will<br>
&gt; be for Spur if they&#39;re in the spur repository and for trunk if they&#39;re in<br>
&gt; the trunk repository.  If they&#39;re in your package-cache you haven&#39;t a hope<br>
&gt; in hell of telling which is which, except if one has been patched by the<br>
&gt; Spur bootstrap, in which case the checkin comment will say<br>
&gt; &quot;Collections-cmm.521 patches by SpurBootstrapMonticelloPackagePatcher<br>
&gt; Cog-eem.158&quot;, which isn&#39;t very obvious.<br>
<br>
</div>But you never answered --  What does the package-cache have to do with<br>
anything?  Why is it so important to even be a factor in this<br>
discussion?</blockquote><div> </div><div>Cuz it&#39;s where one can look for versions when working off line. For some package-cache is an in-your-face place (me for example).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
Y&#39;all keep coming up with these &quot;non-problems&quot; and then &quot;solving&quot; them<br>
with &quot;branches&quot;.  Its crazy.<br>
<br>
Another thing I was never clear about -- the output of your<br>
patch-utilities -- does it produce a NEW version with the old one as<br>
an ancestor (as it should!)?  Or are you actually modifying the<br>
original but keeping the same UUID, same author, same version?  I<br>
think destroying the original is very bad idea -- but I can see that,<br>
if you are, why it would make you want to employ &quot;branches&quot; to bail<br>
you out...  OMG, hacking MC with even more unnecessary precedents?!<br>
(shudder) Please tell me I&#39;m wrong!  Eliot, there&#39;s a _reason_<br>
something is a *Version* -- it should never ever be modified.<br></blockquote><div><br></div><div>It creates a new version:</div><div><br></div><div><span style="white-space:pre">        </span>^MCVersion</div><div><span class="" style="white-space:pre">                </span>package: version package</div>
<div><span class="" style="white-space:pre">                </span>info: (ancestry</div><div><span class="" style="white-space:pre">                                </span>infoWithName: version info name</div><div><span class="" style="white-space:pre">                                </span>message:<span class="" style="white-space:pre">        </span>version info name,</div>
<div><span class="" style="white-space:pre">                                                        </span>&#39; patched for Spur by &#39;,</div><div><span class="" style="white-space:pre">                                                        </span>(CCodeGenerator shortMonticelloDescriptionForClass: self class),</div>
<div><span class="" style="white-space:pre">                                                        </span>&#39;\\&#39; withCRs,</div><div><span class="" style="white-space:pre">                                                        </span>version info message)</div><div><span class="" style="white-space:pre">                </span>snapshot: snapshot</div>
<div><span class="" style="white-space:pre">                </span>dependencies: {} &quot;punt on computing dependencies; there are&#39;t any so far&quot;</div><div> </div><div>So it has its own UUID etc.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class=""><br>
&gt; If we go with branches, which I&#39;m finally accepting is the only sane way to<br>
&gt; go, we&#39;ll know they&#39;re both for trunk, and their duals are<br>
&gt; &quot;Collections.spur-cmm.521&quot; and &quot;Collections.spur-eem.523&quot;.  So I&#39;ll modify<br>
&gt; the bootstrap to produce branched packages, and modify the update process to<br>
&gt; upload these to trunk.  We can nuke the spur repository.  It was a useful<br>
&gt; learning experiment.  We can nuke the primary/secondary repository support.<br>
&gt; It was an uninformed attempt at a fix.<br>
&gt;<br>
&gt; Agreed?<br>
<br>
</div>Why not tell me what you learned so I can learn too?  I really want to<br>
know why the separate spur repository was so bad it has you wanting to<br>
hack version-names so they can act as a string-filter &quot;partition&quot; in<br>
one big slow repository instead of simply using two repositories (two<br>
ecosystems).  I&#39;m not seeing any sanity in that..<br></blockquote><div><br></div><div>OK.</div><div><br></div><div>First, making the update scheme handle two repositories is non-trivial.  The code needs rewriting, and that is too complex for me.</div>
<div>Second, the non-branch scheme is at best confusing or at worst clashes in places like the package cache.</div><div>Third, the branch scheme does all we need already, because it was my misunderstanding that a branch name would prevent me removing the branch name once we&#39;re ready to switch to spur.  That&#39;s not the case.  The ancestry apparently doesn&#39;t include the branch name.</div>
<div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">And no one but me has acknowledged the costs of branches.  Are you<br>

actually &quot;weighing the cost&quot; or do you think branches are &quot;free&quot;?<br>
<div class=""><br>
&gt;&gt; So, the value of branch-tag seems really really<br>
&gt;&gt; low -- practically non-existent.  Please enlighten me, what use-case<br>
&gt;&gt; do branches save the day and pay for their forever-cost?<br>
&gt;<br>
&gt; I have to say they&#39;re hugely valuable.  They&#39;ve allowed me to develop Cog<br>
&gt; (in VMMaker.oscog).  They provide me a way of placing branched versions of<br>
&gt; Kernel, Collections and System alongside their trunk siblings.<br>
<br>
</div>Again, you stated the obvious &quot;what&quot; it does, above, but not _why_<br>
it&#39;s valuable, and why it couldn&#39;t be done another way..  Sad.<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>