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
|
bool BazaarClient::isVcsDirectory(const FilePath &filePath) const
|
||||||
{
|
{
|
||||||
return filePath.isDir()
|
return !filePath.fileName().compare(Constants::BAZAARREPO, HostOsInfo::fileNameCaseSensitivity())
|
||||||
&& !filePath.fileName().compare(Constants::BAZAARREPO, HostOsInfo::fileNameCaseSensitivity());
|
&& filePath.isDir();
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath BazaarClient::findTopLevelForFile(const FilePath &file) const
|
FilePath BazaarClient::findTopLevelForFile(const FilePath &file) const
|
||||||
|
@@ -333,8 +333,8 @@ Utils::Id CvsPluginPrivate::id() const
|
|||||||
|
|
||||||
bool CvsPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &filePath) const
|
bool CvsPluginPrivate::isVcsFileOrDirectory(const Utils::FilePath &filePath) const
|
||||||
{
|
{
|
||||||
return filePath.isDir()
|
return !filePath.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity())
|
||||||
&& !filePath.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity());
|
&& filePath.isDir();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CvsPluginPrivate::isConfigured() const
|
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
|
bool FossilClient::isVcsFileOrDirectory(const FilePath &filePath) const
|
||||||
{
|
{
|
||||||
// false for any dir or file other than fossil checkout db-file
|
// false for any dir or file other than fossil checkout db-file
|
||||||
return filePath.toFileInfo().isFile()
|
return !filePath.fileName().compare(Constants::FOSSILREPO, HostOsInfo::fileNameCaseSensitivity())
|
||||||
&& !filePath.fileName().compare(Constants::FOSSILREPO,
|
&& filePath.isFile();
|
||||||
HostOsInfo::fileNameCaseSensitivity());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath FossilClient::findTopLevelForFile(const FilePath &file) const
|
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
|
bool MercurialClient::isVcsDirectory(const FilePath &filePath) const
|
||||||
{
|
{
|
||||||
return filePath.isDir()
|
return !filePath.fileName()
|
||||||
&& !filePath.fileName().compare(Constants::MERCURIALREPO, HostOsInfo::fileNameCaseSensitivity());
|
.compare(Constants::MERCURIALREPO, HostOsInfo::fileNameCaseSensitivity())
|
||||||
|
&& filePath.isDir();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MercurialClient::view(const FilePath &source, const QString &id,
|
void MercurialClient::view(const FilePath &source, const QString &id,
|
||||||
|
@@ -477,9 +477,9 @@ SubversionPluginPrivate::SubversionPluginPrivate()
|
|||||||
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const
|
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const
|
||||||
{
|
{
|
||||||
const QString baseName = fileName.fileName();
|
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());
|
return !baseName.compare(s, HostOsInfo::fileNameCaseSensitivity());
|
||||||
});
|
}) && fileName.isDir();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SubversionPluginPrivate::activateCommit()
|
bool SubversionPluginPrivate::activateCommit()
|
||||||
|
Reference in New Issue
Block a user