[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.2/kdesdk/kioslave/svn
From:       Mickael Marchand <marchand () kde ! org>
Date:       2009-02-05 19:03:43
Message-ID: 1233860623.552341.16298.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 921832 by marchand:

backport kio_svn fixes from trunk

 M  +24 -1     ksvnd/ksvnd.cpp  
 M  +60 -42    svn.cpp  
 M  +2 -0      svnhelper/kio_svn_helper.cpp  
 M  +1 -1      svnhelper/subversion.desktop  


--- branches/KDE/4.2/kdesdk/kioslave/svn/ksvnd/ksvnd.cpp #921831:921832
@@ -117,12 +117,29 @@
 
 bool KSvnd::isFileInSvnEntries ( const QString &filename, const QString &entfile ) {
 	QFile file( entfile );
+	bool potential = false;
 	if ( file.open( QIODevice::ReadOnly ) ) {
 		QTextStream stream( &file );
 		QString line;
 		while ( !stream.atEnd() ) {
 			line = stream.readLine().simplified();
-			if ( line == "name=\""+ filename + "\"" ) {
+
+			if ( potential == true ) {
+			// Check that filename is really a file or dir
+				if ( line == "dir" || line == "file" ) {
+					file.close();
+					return true;
+				} else {
+			// Reset potential to false
+				potential=false;
+				}
+			}
+
+			if ( line == filename ) {
+			// Assume we're using SVN >= 1.4
+				potential=true;
+			} else if ( line == "name=\""+ filename + "\"" ) {
+			// We could still be using SVN <= 1.3 (XML format)
 				file.close();
 				return true;
 			}
@@ -270,6 +287,12 @@
 	if ( !(listStatus & SomeAreInParentsEntries) &&
 	     !(listStatus & SomeAreExternalToParent) &&
 	     !(listStatus & SomeHaveSvn)) {
+		if ( (listStatus & AllParentsHaveSvn) ) {
+			// These files can only be added to SVN
+			result << "Add";
+			result << "_SEPARATOR_";
+		}
+
 		if( list.size() == 1 && listStatus & SomeAreFolders) {
 			result << "Checkout";
 			result << "Export";
--- branches/KDE/4.2/kdesdk/kioslave/svn/svn.cpp #921831:921832
@@ -286,7 +286,7 @@
 	svn_pool_destroy (subpool);
 }
 
-void kio_svnProtocol::stat(const KUrl & url){
+void kio_svnProtocol::stat(const KUrl & url) {
 	kDebug(7128) << "kio_svn::stat(const KUrl& url) : " << url.url();
 
 	void *ra_baton, *session;
@@ -327,12 +327,16 @@
 	svn_error_t *err = svn_ra_init_ra_libs(&ra_baton,subpool);
 	if ( err ) {
 		kDebug(7128) << "init RA libs failed : " << err->message;
+		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy( subpool );
 		return;
 	}
 	//find RA libs
 	err = svn_ra_get_ra_library(&ra_lib,ra_baton,svn_path_canonicalize( \
target.toUtf8(), subpool ),subpool);  if ( err ) {
 		kDebug(7128) << "RA get libs failed : " << err->message;
+		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy( subpool );
 		return;
 	}
 	kDebug(7128) << "RA init completed";
@@ -354,6 +358,8 @@
 	err = ra_lib->open(&session,svn_path_canonicalize( target.toUtf8(), subpool \
),cbtable,callbackbt,ctx->config,subpool);  if ( err ) {
 		kDebug(7128)<< "Open session " << err->message;
+		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy( subpool );
 		return;
 	}
 	kDebug(7128) << "Session opened to " << target;
@@ -362,13 +368,19 @@
 		err = ra_lib->get_latest_revnum(session,&rev.value.number,subpool);
 		if ( err ) {
 			kDebug(7128)<< "Latest RevNum " << err->message;
+			error( KIO::ERR_SLAVE_DEFINED, err->message );
+			svn_pool_destroy( subpool );
 			return;
 		}
 		kDebug(7128) << "Got rev " << rev.value.number;
 	}
 
 	//get it
-	ra_lib->check_path(session,"",rev.value.number,&kind,subpool);
+	err = ra_lib->check_path(session,"",rev.value.number,&kind,subpool);
+	if ( err ) {
+			error( KIO::ERR_SLAVE_DEFINED, err->message );
+			svn_pool_destroy( subpool );
+	}
 	kDebug(7128) << "Checked Path";
 	UDSEntry entry;
 	switch ( kind ) {
@@ -532,11 +544,10 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_copy(&commit_info, srcsvn.toUtf8(), &rev, \
                destsvn.toUtf8(), ctx, subpool);
-	if ( err ) {
+	if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-	}
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -560,11 +571,10 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_mkdir(&commit_info,targets,ctx,subpool);
-	if ( err ) {
+	if ( err )
 		error( KIO::ERR_COULD_NOT_MKDIR, err->message );
-	}
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -583,11 +593,10 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_mkdir(&commit_info,targets,ctx,subpool);
-	if ( err ) {
+	if ( err )
 		error( KIO::ERR_COULD_NOT_MKDIR, err->message );
-	}
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -606,11 +615,10 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_delete(&commit_info,targets,false/*force remove \
                locally modified files in wc*/,ctx,subpool);
-	if ( err ) {
+	if ( err )
 		error( KIO::ERR_CANNOT_DELETE, err->message );
-	}
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -652,11 +660,10 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_move(&commit_info, srcsvn.toUtf8(), &rev, \
                destsvn.toUtf8(), false/*force remove locally modified files in wc*/, \
                ctx, subpool);
-	if ( err ) {
+	if ( err )
 		error( KIO::ERR_CANNOT_RENAME, err->message );
-	}
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -931,8 +938,11 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_diff (options, path1, &revision1, path2, &revision2, \
                recurse, false, true, outfile, NULL, ctx, subpool);
-	if ( err )
+	if ( err ) {
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy (subpool);
+		return;
+	}
 	//read the content of the outfile now
 	QStringList tmp;
 	apr_file_close(outfile);
@@ -979,8 +989,8 @@
 	svn_error_t *err = svn_client_switch (NULL/*result revision*/, path, url, &rev, \
recurse, ctx, subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -995,12 +1005,17 @@
 
 	svn_opt_revision_t rev = createRevision( revnumber, revkind, subpool );
 
+//	apr_array_header_t *targets = apr_array_make(subpool, 1, sizeof(const char *));
+//	const char *_target = apr_pstrdup( subpool, svn_path_canonicalize( \
target.toUtf8() , subpool ) ); +//	(*(( const char ** )apr_array_push(( \
apr_array_header_t* )targets)) ) = _target; +
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = svn_client_update (NULL, svn_path_canonicalize( target.toUtf8(), \
subpool ), &rev, true, ctx, subpool); +//	svn_error_t *err = svn_client_update2 \
(NULL, targets, &rev, true, false, ctx, subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1027,8 +1042,8 @@
 	svn_error_t *err = \
svn_client_import(&commit_info,path,url,nonrecursive,ctx,subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1051,8 +1066,8 @@
 	svn_error_t *err = svn_client_checkout (NULL/* rev actually checkedout */, \
svn_path_canonicalize( target.toUtf8(), subpool ), svn_path_canonicalize ( \
dpath.toUtf8(), subpool ), &rev, true, ctx, subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1074,8 +1089,11 @@
 
 	initNotifier(false, false, false, subpool);
 	svn_error_t *err = \
                svn_client_commit(&commit_info,targets,nonrecursive,ctx,subpool);
-	if ( err )
+	if ( err ) {
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy (subpool);
+		return;
+	}
 
 	if ( commit_info ) {
 		for ( QList<KUrl>::const_iterator it = wc.begin(); it != wc.end() ; ++it ) {
@@ -1116,8 +1134,8 @@
 	svn_error_t *err = svn_client_add(svn_path_canonicalize( nurl.path().toUtf8(), \
subpool ),nonrecursive,ctx,subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1142,8 +1160,8 @@
 
 	if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1166,8 +1184,8 @@
 	svn_error_t *err = svn_client_revert(targets,nonrecursive,ctx,subpool);
 	if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1188,8 +1206,8 @@
 	svn_error_t *err = svn_client_status(&result_rev, svn_path_canonicalize( \
nurl.path().toUtf8(), subpool ), &rev, kio_svnProtocol::status, this, fullRecurse, \
getAll, checkRepos, no_ignore, ctx, subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
@@ -1554,8 +1572,8 @@
 	svn_error_t *err = svn_client_resolved(svn_path_canonicalize( nurl.path().toUtf8(), \
subpool ), recurse,ctx,subpool);  if ( err )
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
-
-	finished();
+	else
+		finished();
 	svn_pool_destroy (subpool);
 }
 
--- branches/KDE/4.2/kdesdk/kioslave/svn/svnhelper/kio_svn_helper.cpp #921831:921832
@@ -251,6 +251,8 @@
 		KIO::SimpleJob * job = KIO::special(servURL, parms);
 		connect( job, SIGNAL( result( KJob * ) ), this, SLOT( slotResult( KJob * ) ) );
 		KIO::NetAccess::synchronousRun( job, 0 );
+	} else if (args->isSet("R")) {
+		kDebug(7128) << "rename/move TODO " << list;
 	} else if (args->isSet("C")) {
 		kDebug(7128) << "checkout " << list;
 		SubversionCheckoutDialog d;
--- branches/KDE/4.2/kdesdk/kioslave/svn/svnhelper/subversion.desktop #921831:921832
@@ -259,7 +259,7 @@
 Name[zh_CN]=重命名...
 Name[zh_TW]=重新命名...
 Icon=edit-rename
-Exec=kio_svn_helper -r %U
+Exec=kio_svn_helper -R %U
 Comment=Rename a file locally and in the repository.  Use this rather than adding \
and deleting to rename a file.  Comment[ca]=Reanomena un fitxer localment i en el \
repositori. Use-ho en comptes d'afegir i eliminar per a reanomenar un fitxer.  \
Comment[cs]=Přejmenovat soubor lokálně a v repository. Použijte raději než \
přidání a smazání souboru k docílení jeho přejmenování.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic