On Thu, Aug 23, 2018 at 8:53 PM Nathan Hartman <hartman.nathan_at_gmail.com> wrote:
> On Thu, Aug 23, 2018 at 9:46 AM Christoph Hannebauer <Christoph.Hannebauer_at_glueckkanja.com> wrote:
>> I have not subscribed to the users mailing list, so please CC me in this thread.
>>
>> My SVN crashed with this error message:
>> 'D:\Development\SVN\Releases\TortoiseSVN-1.10.1\ext\subversion\subversion\libsvn_wc\wc_db.c'
>> line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
>>
>> What I did before the crash, was execute the following command:
>> svn checkout https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit/c++/WindowsServer2008R2
>>
>> I didn’t check whether other machines also show this behavior, but I did check that TortoiseSVN 1.9.7 is also affected.
>
> Interesting. There is another thread about an assertion failure, also in a call to SVN_IS_VALID_REVNUM(), but in a different file. Could these be related?
No, it seems not. I believe this is a bug in GitHub's emulation of the
subversion protocol.
First, when I try to checkout a parent directory higher up, it works fine:
svn checkout
https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit
As soon as you add the "c++" to the checkout path, it crashes:
[[[
svn checkout https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit/c++
svn: E235000: In file
'D:\Development\SVN\Releases\TortoiseSVN-1.10.1\ext\subversion\subversion\libsvn_wc\wc_db.c'
line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
]]]
URL-encoding the '+' signs doesn't help by the way:
[[[
svn checkout https://github.com/Microsoft/Windows-classic-samples/trunk/Samples/Win7Samples/security/certificateservices/exit/c%2B%2B/
svn: E235000: In file
'D:\Development\SVN\Releases\TortoiseSVN-1.10.1\ext\subversion\subversion\libsvn_wc\wc_db.c'
line 1648: assertion failed (SVN_IS_VALID_REVNUM(changed_rev))
]]]
But if I try the same with a regular SVN repository, there is no problem:
[[[
C:\Temp\svntest>svnadmin create repos
C:\Temp\svntest>svn mkdir -mm --parents
"file:///C:/Temp/svntest/repos/trunk/c++/WindowsServer2008R2"
Committing transaction...
Committed revision 1.
C:\Temp\svntest>svn ls file:///C:/Temp/svntest/repos/trunk
c++/
C:\Temp\svntest>svn ls file:///C:/Temp/svntest/repos/trunk/c++
WindowsServer2008R2/
C:\Temp\svntest>svn co file:///C:/Temp/svntest/repos/trunk/c++
A c++\WindowsServer2008R2
Checked out revision 1.
C:\Temp\svntest>svn co
file:///C:/Temp/svntest/repos/trunk/c++/WindowsServer2008R2
Checked out revision 1.
C:\Temp\svntest>dir
...
05-09-2018 16:33 <DIR> .
05-09-2018 16:33 <DIR> ..
05-09-2018 16:33 <DIR> c++
05-09-2018 15:12 <DIR> repos
05-09-2018 16:33 <DIR> WindowsServer2008R2
]]]
So I conclude that this is a bug in GitHub, sending it's data to the svn client.
Workaround: perform a checkout of a parent directory higher up the
tree, so the root path of your working copy does not contain those '+'
signs.
--
Johan
Received on 2018-09-05 16:44:11 CEST