Summary: | local filenames are http escaped when using svn over http. | ||
---|---|---|---|
Product: | [Developer tools] kdevplatform | Reporter: | Steven T. Hatton <hattons> |
Component: | subversion | Assignee: | kdevelop-bugs-null |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Steven T. Hatton
2005-06-03 02:39:58 UTC
When this posted I saw that the system description was http escaped. That indicates to me the problem is with the new KDE 3.4.1 bits, and not KDevelop. But I'm not sure. It looks as if my conjecture about this being caused by http escapes may not be completely correct. I tried this with a directory that has no non-alpha characters other than '/', and the SVN project still failed to work correctly. It may be due to the use of file:// protocol specification. As in: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory kdevelop (core): [void PartController::slotDocumentDirty(Kate::Document*, bool, unsigned char)] kdevelop (core): file:///home/hattons/code/cxx/gs/breakme/src/breakme.cpp kdevelop (core): true kdevelop (core): \x03 kdevelop (grep view): context in grepview kdevelop: file context with /home/hattons/code/cxx/gs/breakme/src/breakme.cpp kdevelop: dirpath /home/hattons/code/cxx/gs/breakme/.svn/false kdevelop: entries /home/hattons/code/cxx/gs/breakme/.svn/entriesfalse kdevelop (core): [void PartController::slotDocumentDirty(Kate::Document*, bool, unsigned char)] But that really is a guess. It depends if its trying to tell the file system to use that name. In any case. I can't use the SVN support. I've now noticed that all the project files _are_ actually being created. They are deleted when KDevelop tries to run svn import. I assume the intention is to import the project, then replace the local files with files checked out from the server. There are not files being added to the server. I am, however, challenged for a password, and I can hear the harddrive is being accessed on the server, so it's talking to the server. I fetched the latest kdesdk and replaced the SuSE provided rpms with my local build. That had no effect on the problem. I did notice this a bit higher up in the text dump from KDevelop: kdevelop: kdevelop: kdevelop (core): dcop emitting project opened QObject::connect: No such slot subversionPart::slotActionAddToIgnoreList() QObject::connect: (sender name: 'subversion_ignore') QObject::connect: (receiver name: 'Subversion') QObject::connect: No such slot subversionPart::slotActionRemoveFromIgnoreList() QObject::connect: (sender name: 'subversion_donot_ignore') QObject::connect: (receiver name: 'Subversion') QObject::connect: No such slot subversionPart::slotStopButtonClicked(KDevPlugin*) QObject::connect: (sender name: 'unnamed') QObject::connect: (receiver name: 'Subversion') I tried allowing unauthenticated access to the server see if that worked. But it didn't. This is the /var/log/apache2/access_log 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs HTTP/1.1" 207 647 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs/!svn/vcc/default HTTP/1.1" 207 398 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs/!svn/bln/4 HTTP/1.1" 207 449 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs HTTP/1.1" 207 647 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs/!svn/vcc/default HTTP/1.1" 207 449 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs/!svn/bc/4 HTTP/1.1" 207 657 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs HTTP/1.1" 207 647 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs HTTP/1.1" 207 647 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs/!svn/vcc/default HTTP/1.1" 207 398 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs/!svn/bln/4 HTTP/1.1" 207 449 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "PROPFIND /repos/gs HTTP/1.1" 207 647 "-" "SVN/1.0.8 (r11084) neon/0.24.7" 63.161.169.137 - - [05/Jun/2005:13:12:18 -0400] "REPORT /repos/gs/!svn/vcc/default HTTP/1.1" 200 2558 "-" "SVN/1.0.8 (r11084) neon/0.24.7" I'm running: Subversion version 1.0.8, if that matters. I wonder if this might be the problem: vcs/subversion/subversion_core.cpp line 241 void subversionCore::createNewProject( const QString& // dirName , const KURL& // importURL , bool // init ) { } I still have more to investigate, but I am fairly confident the problem is in the syntax of the request sent to the server. Using GDB I've been able to determine the problem is almost certainly in the "if" block of the first "if else" of the following function: kdevelop/vcs/subversion/integrator/svnintegratordlg.cpp:46 void SvnIntegratorDlg::accept() { KURL servURL (repos1->url()); if ( servURL.isEmpty() ) return; if ( ! servURL.protocol().startsWith( "svn" ) ) servURL.setProtocol( "svn+" + servURL.protocol() ); //make sure it starts with "svn" kdDebug(9036) << "servURL : " << servURL.prettyURL() << endl; if ( importProject->isChecked() ) { QByteArray parms; QDataStream s( parms, IO_WriteOnly ); int cmd = 5; s << cmd << servURL << KURL::fromPathOrURL( m_projectLocation ); SimpleJob * job = KIO::special(servURL, parms, true); #if KDE_VERSION <= KDE_MAKE_VERSION(3,3,90) KIO_COMPAT::NetAccess::synchronousRun(job, 0); #else NetAccess::synchronousRun(job, 0); #endif } else if ( createProject->isChecked() ) { /* KURL miscURL = servURL; miscURL.setPath(servURL.path() + "/tags/"); KIO::SimpleJob * job = KIO::mkdir(miscURL); NetAccess::synchronousRun(job, 0); miscURL.setPath(servURL.path() + "/branches/"); job = KIO::mkdir(miscURL); NetAccess::synchronousRun(job, 0); miscURL.setPath(servURL.path() + "/vendor/"); job = KIO::mkdir(miscURL); NetAccess::synchronousRun(job, 0);*/ KURL::List list; KURL miscURL = servURL; miscURL.setPath( servURL.path() + "/tags/" ); list << miscURL; miscURL.setPath( servURL.path() + "/branches/" ); list << miscURL; miscURL.setPath( servURL.path() + "/vendor/" ); list << miscURL; QByteArray parms; QDataStream s( parms, IO_WriteOnly ); int cmd = 10; // MKDIR(list) s << cmd << list; SimpleJob *job = KIO::special(servURL, parms, true); #if KDE_VERSION <= KDE_MAKE_VERSION(3,3,90) KIO_COMPAT::NetAccess::synchronousRun(job, 0); #else NetAccess::synchronousRun(job, 0); #endif QByteArray parms2; QDataStream s2( parms2, IO_WriteOnly ); cmd = 5; //IMPORT servURL.setPath(servURL.path()+ "/trunk/"); s2 << cmd << servURL << KURL::fromPathOrURL( m_projectLocation ); job = KIO::special(servURL, parms2, true); #if KDE_VERSION <= KDE_MAKE_VERSION(3,3,90) KIO_COMPAT::NetAccess::synchronousRun(job, 0); #else NetAccess::synchronousRun(job, 0); #endif } //delete the template directory and checkout a fresh one from the server KProcess *rmproc = new KProcess(); *rmproc << "rm"; *rmproc << "-f" << "-r" << m_projectLocation; rmproc->start(KProcess::Block); QByteArray parms3; QDataStream s3( parms3, IO_WriteOnly ); int cmd2 = 1; //CHECKOUT int rev = -1; //servURL should be set correctly above s3 << cmd2 << servURL << KURL::fromPathOrURL( m_projectLocation ) << rev << QString( "HEAD" ); SimpleJob *job2 = KIO::special(servURL, parms3, true); #if KDE_VERSION <= KDE_MAKE_VERSION(3,3,90) KIO_COMPAT::NetAccess::synchronousRun(job2, 0); #else NetAccess::synchronousRun(job2, 0); #endif } Excellent debugging, thanks! Just to be sure, you're talking about the code path that is used if import project is checked and create project is not checked, correct? Svn support got large improvements, I think this is fixed. |