forked from qt-creator/qt-creator
VCS: Improve performance of isVcsFileOrDirectory implementations
FilePath operations are relative expensive on Windows compared to the cost of a string comparison, so always first check the file name before checking any file meta data. Change-Id: Ibb4c13d7e11e0c01bdf3706a62362f4c0a27d284 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -147,8 +147,8 @@ void BazaarClient::annotate(const Utils::FilePath &workingDir, const QString &fi
|
||||
|
||||
bool BazaarClient::isVcsDirectory(const FilePath &filePath) const
|
||||
{
|
||||
return filePath.isDir()
|
||||
&& !filePath.fileName().compare(Constants::BAZAARREPO, HostOsInfo::fileNameCaseSensitivity());
|
||||
return !filePath.fileName().compare(Constants::BAZAARREPO, HostOsInfo::fileNameCaseSensitivity())
|
||||
&& filePath.isDir();
|
||||
}
|
||||
|
||||
FilePath BazaarClient::findTopLevelForFile(const FilePath &file) const
|
||||
|
@@ -333,8 +333,8 @@ Utils::Id CvsPluginPrivate::id() const
|
||||
|
||||
bool CvsPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &filePath) const
|
||||
{
|
||||
return filePath.isDir()
|
||||
&& !filePath.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity());
|
||||
return !filePath.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity())
|
||||
&& filePath.isDir();
|
||||
}
|
||||
|
||||
bool CvsPluginPrivate::isConfigured() const
|
||||
|
@@ -742,9 +742,8 @@ void FossilClient::annotate(const FilePath &workingDir, const QString &file, int
|
||||
bool FossilClient::isVcsFileOrDirectory(const FilePath &filePath) const
|
||||
{
|
||||
// false for any dir or file other than fossil checkout db-file
|
||||
return filePath.toFileInfo().isFile()
|
||||
&& !filePath.fileName().compare(Constants::FOSSILREPO,
|
||||
HostOsInfo::fileNameCaseSensitivity());
|
||||
return !filePath.fileName().compare(Constants::FOSSILREPO, HostOsInfo::fileNameCaseSensitivity())
|
||||
&& filePath.isFile();
|
||||
}
|
||||
|
||||
FilePath FossilClient::findTopLevelForFile(const FilePath &file) const
|
||||
|
@@ -347,8 +347,9 @@ void MercurialClient::revertAll(const FilePath &workingDir, const QString &revis
|
||||
|
||||
bool MercurialClient::isVcsDirectory(const FilePath &filePath) const
|
||||
{
|
||||
return filePath.isDir()
|
||||
&& !filePath.fileName().compare(Constants::MERCURIALREPO, HostOsInfo::fileNameCaseSensitivity());
|
||||
return !filePath.fileName()
|
||||
.compare(Constants::MERCURIALREPO, HostOsInfo::fileNameCaseSensitivity())
|
||||
&& filePath.isDir();
|
||||
}
|
||||
|
||||
void MercurialClient::view(const FilePath &source, const QString &id,
|
||||
|
@@ -477,9 +477,9 @@ SubversionPluginPrivate::SubversionPluginPrivate()
|
||||
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const
|
||||
{
|
||||
const QString baseName = fileName.fileName();
|
||||
return fileName.isDir() && contains(m_svnDirectories, [baseName](const QString &s) {
|
||||
return contains(m_svnDirectories, [baseName](const QString &s) {
|
||||
return !baseName.compare(s, HostOsInfo::fileNameCaseSensitivity());
|
||||
});
|
||||
}) && fileName.isDir();
|
||||
}
|
||||
|
||||
bool SubversionPluginPrivate::activateCommit()
|
||||
|
Reference in New Issue
Block a user