<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-19 17:38 GMT+02:00 Chris Muller <span dir="ltr">&lt;<a href="mailto:ma.chris.m@gmail.com" target="_blank">ma.chris.m@gmail.com</a>&gt;</span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);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?<br>
<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
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></blockquote><div><br></div><div>Chris, what is a branch for you?<br></div><div>For some transition period, we have to maintain 2 parallel versions of some packages (like Kernel)<br></div><div>- one for cog v3<br></div>
<div>- one for Spur<br></div><div>Doesn&#39;t that perfectly define a use case of branches?<br></div><div>The way we automate the process (or not) is not the problem, in all cases we have to deliver two different artefacts.<br>
</div><div><br></div><div>Or is all your argumentation about naming conventions of a specific commit?<br></div><div>The name of a commit is not related to the type of repository. It&#39;s just an ID.<br></div><div>If you insist, naming a commit &#39;Kernel-cmm.237&#39; is not event necessary, we could just use the associated UUID as a name instead of package-author.version<br>
<div><br>So what is the name all about?</div><div>It&#39;s about guiding human when selecting/picking some specific package.<br></div>It&#39;s not perfect, but that&#39;s exactly what we currently have as well established convention hardcoded in tool support.<br>
<br></div><div>The convention package.branch-author.version is just variant of above convention.<br>And the tools already are aware of it, so again, what&#39;s the problem?<br></div><div>I don&#39;t see how it could be more a problem than package-author.version<br>
<br></div><div>What defines a branch is the ancestry.<br>The naming convention is just a helper to outline the intention (Hey, this commit is intended for Spur image/Spur vm).<br></div><div><br></div><div>Using different repositories is also a possible alternate convention to manage these branches.<br>
</div><div>But it ain&#39;t gonna work, because it&#39;s more complex to manage.<br></div><div>It means that a user merging some cog_v3_inbox/Kernel into a Kernel.spur should think of publishing the next commit into spur_inbox/Kernel.<br>
It&#39;s really easy to mess up, because all the responsibility to pick the right repository is on user shoulders, and we will mistake (I would, you would, we already did!). This may break our MCM update mechanism more than often...<br>
</div><div>With current branch convention support, we can&#39;t fail that easily. When we merge Kernel.cogv3 into a Kernel.spur, we still have a Kernel.spur working copy, and will publish a Kernel.spur by default, no risk to fail, this is automated.<br>
</div><div>If we accidentally load  Kernel.cogv3 into spur instead of merging, no risk to fail, the image will lock before we can commit anything.<br></div><div><br>For me, using branch naming convention is currently the best efficiency/cost ratio since it costs almost nothing.<br>
<br></div><div>Of course, I agree, we could use more sophisticated backends (database), define a more sophisticated protocol for querying the backends (retrieve partial chunks rather than whole database contents), and take advantage of these in more sophisticated tools (for example drawing the history of branches and merges a la github).<br>
We could dream of a better MC, but that&#39;s not what we have.<br><br></div><div>cheers<br><br>Nicolas<br></div></div></div></div>