From 6383643d32e5666e7c12e05f40d9bfcb53f83e3e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Thu, 20 May 2010 14:52:08 +0200 Subject: [PATCH] VCS[Subversion/Perforce]: Fix VCSManager caching (Windows). Ensure clean paths are returned by IVersionControl::findTopLevelForDirectory() as otherwise caching of VCSManager breaks (Windows) and commands are executed all over again. Fix display in SVN/CVS. Acked-by: con --- src/plugins/cvs/cvsplugin.cpp | 3 ++- src/plugins/perforce/perforcechecker.cpp | 3 ++- src/plugins/subversion/subversionplugin.cpp | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index f1b21a4de6d..1f7e646fe1d 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -980,7 +980,8 @@ static inline QString msgExecutionLogEntry(const QString &workingDir, const QStr const QString args = arguments.join(QString(QLatin1Char(' '))); if (workingDir.isEmpty()) return CVSPlugin::tr("Executing: %1 %2\n").arg(executable, args); - return CVSPlugin::tr("Executing in %1: %2 %3\n").arg(workingDir, executable, args); + return CVSPlugin::tr("Executing in %1: %2 %3\n"). + arg(QDir::toNativeSeparators(workingDir), executable, args); } // Run CVS. At this point, file arguments must be relative to diff --git a/src/plugins/perforce/perforcechecker.cpp b/src/plugins/perforce/perforcechecker.cpp index 315c7311b49..ea48d9db00f 100644 --- a/src/plugins/perforce/perforcechecker.cpp +++ b/src/plugins/perforce/perforcechecker.cpp @@ -155,8 +155,9 @@ static inline QString clientRootFromOutput(const QString &in) QRegExp regExp(QLatin1String("(\\n|\\r\\n|\\r)Root:\\s*(.*)(\\n|\\r\\n|\\r)")); QTC_ASSERT(regExp.isValid(), return QString()); regExp.setMinimal(true); + // Normalize slashes and capitalization of Windows drive letters for caching. if (regExp.indexIn(in) != -1) - return regExp.cap(2).trimmed(); + return QFileInfo(regExp.cap(2).trimmed()).absoluteFilePath(); return QString(); } diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 36e60dcc937..a29483bd189 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -1030,7 +1030,8 @@ static inline QString msgExecutionLogEntry(const QString &workingDir, const QStr const QString argsS = SubversionSettings::formatArguments(arguments); if (workingDir.isEmpty()) return SubversionPlugin::tr("Executing: %1 %2\n").arg(executable, argsS); - return SubversionPlugin::tr("Executing in %1: %2 %3\n").arg(workingDir, executable, argsS); + return SubversionPlugin::tr("Executing in %1: %2 %3\n"). + arg(QDir::toNativeSeparators(workingDir), executable, argsS); } SubversionResponse SubversionPlugin::runSvn(const QString &workingDir, @@ -1252,7 +1253,7 @@ QString SubversionPlugin::findTopLevelForDirectoryI(const QString &directory) co return QString(); for (QDir parentDir = lastDirectory; parentDir.cdUp() ; lastDirectory = parentDir) { if (!managesDirectory(parentDir)) - return QDir::toNativeSeparators(lastDirectory.absolutePath()); + return lastDirectory.absolutePath(); } return QString(); } -- GitLab