Hi Stefan,
I do know why I was getting HTTP 500, it isn't a mystery... It was part of my effort to troubleshoot this issue. When sending a DAV request to "/" (not my repo root), I had mod_dav pick it up but I didn't actually configure anything for mod_dav there, so the connection thread would error out and die. Not a problem, it was just one of my ways of probing at the issue to understand the behavior better (for both the working clients and the non-working one). I created a handful of "alternate" httpd.conf configurations that worked for the functional client but failed (with different errors) in the non-functional client, so it was a willful action on my part to generate HTTP 500, among others (temp redirect, perm redirect, dav not supported, internal error) - at no point was the server producing these codes unexpectedly, I just wanted to know how the clients reacted... the "good" one succeeded in all configurations, and the "bad" one failed all of them (each time just reporting the error in the repo browser window and giving up, never following up with a GET request).
But I sort of resolved this.
It became clear that that I couldn't troubleshoot further without going through code, so I set up an environment and branched off the tag for 1.13.1... RepositoryBrowser.cpp, TrySVNParentPath(), line 5092, I commented out:
<code>
if (m_bSparseCheckoutMode)
return false;
if (!m_bTrySVNParentPath)
return false;
</code
I'm not sure why it cares at this point if it's in "sparse checkout mode," since it should only ever try to read it if it got back an error from the server on a DAV request, and the operation is in an initialization anyway. Might be important if we're checking out immediately from the context menu, I guess, but in my case I'm just trying to load the repo browser to browse, no checkout involved,
No idea why it might be set to sparse checkout mode. I am not doing anything that I'm aware to cause that, at least not anything I'm not doing from the working client. But this workaround did the trick, and I'm not sure exactly what scenario will fail by leaving that commented out... seems like worst case it attempts a GET at the wrong time, but the previous request would have to fail to reach there, so in a practical sense it may not matter. Nonetheless, it would take someone more familiar with the code and with svn to determine why that logic was put there in the first place. And I basically nullified the setting for TrySVNParentPath... theoretically no different than stock behavior (without reg key overriding it).
Unfortunately, attaching a debugger isn't really possible with my setup. I guess I'm content with my patch, as long as you don't think it will cause some adverse behavior down the line. I suppose I could fill it with trace messages and chase it further that way... I'll see how much I care after some sleep. Long night chasing down environment gremlins. :-)
Actually, completely unrelated, but there was one environment issue I just worked around rather than solve... the msi apparently needs crtmfc\win32\Microsoft.VC142.CRT\vcruntime140_1.dll on the win32 build, but this file doesn't exist. vcruntime140.dll did exist in that folder, and both existed for the x64 version of the path. So I'm not sure how the win32 for 1.13.1 ever created the msi successfully. I guess the file might be living in someone's working copy but never added.
Thanks,
Joe