> 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.
The changes to svn_path_compare_paths are fairly trivial. I can
modify that this weekend to let it do:
contact.html <
orderform.html <
docs/biography.pdf <
docs/mailinglist.txt
Before falling back to strncmp it is simply a matter of '/' counting.
The path with lesser directory seperators in it should be before the
other path. When the counts are the same, fall back to strncmp.
Sander
---------------------------------------------------------------------
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