<br><br><div class="gmail_quote">On Wed, Oct 14, 2009 at 12:14 AM, Petr Rockai <span dir="ltr">&lt;<a href="mailto:me@mornfall.net">me@mornfall.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">Jason Dagit &lt;<a href="mailto:dagit@codersbase.com">dagit@codersbase.com</a>&gt; writes:<br>
<br>
&gt; What is the distinction between LowLevel and Internal?  I don&#39;t understand how<br>
&gt; this change improves things.  Internal is already meant to be private and<br>
&gt; whatnot.  Now I&#39;m confused by the distinction between LowLevel and Internal. <br>
&gt; Could you clarify the rationale?<br>
</div>Sure, the Internal module is a big mish-mash of interdependent<br>
functionality. The problem is that separating parts of the Internal<br>
functionality in State led to a situation, where State depends on<br>
Internal. However, Internal now relies on readRecorded from Repository.State,<br>
and therefore State cannot import Internal anymore, lest a dependency cycle<br>
forms. Therefore, I&#39;ve moved things that are needed by Repository.State but do<br>
not need anything from Internal to a separate module. I intend to move more<br>
such bits into that module later.<br>
<br>
For reference, I first tried to separate the functions for handling &quot;pending&quot;<br>
state into a separate Repository.Pending, but this would again lead to<br>
dependency cycles: make_new_pending needs readRecorded from State,<br>
unrecordedChanges in State need read_pending. Fortunately, read_pending is a<br>
very low-level piece of code that basically doesn&#39;t do anything other than<br>
deserialize the primitive patches in the pending file.<br><br></blockquote><div> </div>I think you&#39;ve convinced me.<br>
<br>
I likely won&#39;t find time to apply this until Saturday.  I do think it
should go in (and others are welcome to push it if I&#39;m too slow).  I
would still like to see before and after numbers for the last patch,
but not a requirement.<br>
<br>
Thanks,<br>
Jason</div><br>