I think I sent this just to Greg by accident earlier this morning.
Now, I share it with all of you for your knowledge-enhancement
benefit.  Note that because I failed to send it to the list in the
first place, Ben actually *did* respond to Greg's message. :-) 
-------------------
Greg Stein <gstein@lyra.org> writes:
> Why would we try to lock a directory twice? I had thought our algorithm was
> very strict about how it visited items, so there shouldn't be a visit to the
> same directory twice. Assuming that is true, then this patch would be
> covering up a more fundamental and deeper bug.
Well, shoot, I was hoping Ben would respond to this, but oh well. :-)
I definitely freaked out too when I saw this going on, but the
explanation is rather simple.  Basically, it boils down to some
misunderstandings about how our commit target sorting works.
Given these targets:
   contact.html
   docs/mailinglist.txt
   orderform.html
   docs/biography.pdf
  
The sort algorithm, unlike what Ben and I both seemed to think, does
NOT do a "dirs first" approach--it simply sorts paths, promising that
children of the same parent will be grouped.
So, the output of this sort would be:
   contact.html
   docs/biography.pdf
   docs/mailinglist.txt
   orderform.html
NOT:
   docs/biography.pdf
   docs/mailinglist.txt
   contact.html
   orderform.html
AND NOT:  
   contact.html
   orderform.html
   docs/biography.pdf
   docs/mailinglist.txt
As you can see, this means when we commit `contact.html' we will lock
its parent directory, `/'.  The we do `docs/biography.pdf' and
`docs/mailinglist.txt', and we lock `docs/'.  Finally, we come to
`orderform.html', and we need to lock `/' -- but it has already been
locked.
If the sorting algorithm promised to put grandchildren of a given
parent above their...uncles and aunts? (a dirs-first sorting) then we
wouldn't run into this.  But that's not required by the editor.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:37 2006