VCS: Prevent soft assertion for non-existent directories

Blame in a renamed directory then blaming some revision with the
previous name triggers an assertion

Change-Id: If89a268a776df1c6e0061fd5828492b0200237b4
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2013-10-11 16:10:08 +03:00
committed by Orgad Shaneh
parent 4e4fdb4db0
commit 1cf1159f41

View File

@@ -271,6 +271,9 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &input
// Register Vcs(s) with the cache // Register Vcs(s) with the cache
QString tmpDir = QFileInfo(directory).canonicalFilePath(); QString tmpDir = QFileInfo(directory).canonicalFilePath();
// directory might refer to a historical directory which doesn't exist.
// In this case, don't cache it.
if (!tmpDir.isEmpty()) {
const QChar slash = QLatin1Char('/'); const QChar slash = QLatin1Char('/');
const StringVersionControlPairs::const_iterator cend = allThatCanManage.constEnd(); const StringVersionControlPairs::const_iterator cend = allThatCanManage.constEnd();
for (StringVersionControlPairs::const_iterator i = allThatCanManage.constBegin(); i != cend; ++i) { for (StringVersionControlPairs::const_iterator i = allThatCanManage.constBegin(); i != cend; ++i) {
@@ -280,6 +283,7 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &input
if (slashPos >= 0) if (slashPos >= 0)
tmpDir.truncate(slashPos); tmpDir.truncate(slashPos);
} }
}
// return result // return result
if (topLevelDirectory) if (topLevelDirectory)