Version: CVS (using KDE 3.4.1%20Level%20%22a%22%20,%20SUSE%209.2%20UNSUPPORTED) Compiler: gcc%20version%203.3.4%20(pre%203.3.5%2020040809) OS: Linux%20(i686)%20release%202.6.8-24.14-default The following did _not_ happen when I created a project without SVN version control. When creating a (C++ simple hello world) project, selecting svn for version control and pointing it to an http svn server, local file names (<path>/c++/<project>) are escaped as if they were http strings. For example: code/c++/gs/ becomes: code/c%2B%2B/gs/ and the latter is what is used when Kdevelop tries to write to the local file system. I found that the string is stored in the customized.kdevses as this: <Doc0 NumberOfViews="1" URL="file:///home/hattons/code/c%2B%2B/gs/customized/src/customized.cpp" > I attempted to recreate the project and was able to capture this error message, which I believe briefly flashed up the first time: _______________________________________________________________________________ Warning: The file "/home/hattons/code/c++/gs/customized/src/customized.cpp" has been deleted on disk. If this was not your intention, make sure to save this file now. ________________________________________________________________________________ When these things happen, nothing but three configuration file are written to the harddrive. These are: customized.kdevelop customized.kdevelop.pcs customized.kdevses The following is from the terminal output of Kdevelop: ASSERT: "part && parent" in partwidget.cpp (40) ERROR: syntax error ERROR: syntax error ERROR: syntax error kdevelop (file view): Requested FileTree for: /home/hattons/code/c++/gs/customized ERROR: syntax error ERROR: syntax error ERROR: syntax error ERROR: syntax error kdevelop: dirpath /home/hattons/code/c++/gs/customized/.svn/false kdevelop: entries /home/hattons/code/c++/gs/customized/.svn/entriesfalse kdevelop (file view): Valid VCS directory: false ERROR: syntax error ERROR: syntax error ERROR: syntax error ERROR: syntax error kdevelop: dirpath /home/hattons/code/c++/gs/customized/.svn/false kdevelop: entries /home/hattons/code/c++/gs/customized/.svn/entriesfalse kdevelop (file view): FileTreeViewWidgetImpl::FileTreeViewWidgetImpl() kdevelop (file view): StdFileTreeWidgetImpl::StdFileTreeWidgetImpl() kdevelop (file view): FileTreeWidget::openDirectory(): /home/hattons/code/c++/gs/customized kdevelop (file view): files added to project: 1 kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/src kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/NEWS kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/TODO kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/depcomp kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/README kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/ltmain.sh kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/configure.in kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/config.guess kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/install-sh kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/config.sub kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/missing kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/customized.kdevses kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/mkinstalldirs kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/Makefile.am kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/Makefile.cvs kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/AUTHORS kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/INSTALL kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/customized.kdevelop kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/ChangeLog kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/COPYING kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/Doxyfile kdevelop (file view): MyFileTreeViewItem::hideOrShow(): /home/hattons/code/c++/gs/customized/templates kdevelop (core): [void PartController::slotDocumentDirty(Kate::Document*, bool, unsigned char)] kdevelop (core): file:///home/hattons/code/c%2B%2B/gs/customized/src/customized.cpp kdevelop (core): true kdevelop (core): \x03 shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
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.