diff options
author | Knut Petter Svendsen <[email protected]> | 2013-04-02 21:15:35 +0200 |
---|---|---|
committer | Knut Petter Svendsen <[email protected]> | 2013-04-05 15:06:46 +0200 |
commit | c7cd4c9aa4aecbe028be5959cedecac1681dfa00 (patch) | |
tree | c53038f39b3d97d6f233c216dadc57311c458864 /src/plugins/clearcase/clearcasesync.cpp | |
parent | 75691393ec9bf87c290fb8e9d199cbeab7e726f8 (diff) |
ClearCase: Assume Read Only file is Checked In for dynamic view
Assume that read only files on dynamic views are checked in files.
That assumption gives a better status until all files are indexed.
Once all files are indexed the correct state will be used (in case
the assumption was wrong).
Change-Id: I7097b89801b6798399560d727566419e72f13b2f
Reviewed-by: Orgad Shaneh <[email protected]>
Diffstat (limited to 'src/plugins/clearcase/clearcasesync.cpp')
-rw-r--r-- | src/plugins/clearcase/clearcasesync.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/plugins/clearcase/clearcasesync.cpp b/src/plugins/clearcase/clearcasesync.cpp index 51451f787dd..e5039371ea2 100644 --- a/src/plugins/clearcase/clearcasesync.cpp +++ b/src/plugins/clearcase/clearcasesync.cpp @@ -67,23 +67,36 @@ void ClearCaseSync::run(QFutureInterface<void> &future, const QString &topLevel, return; QDir topLevelDir(topLevel); + const bool isDynamic = m_plugin->isDynamic(); + QStringList args(QLatin1String("ls")); if (hot) { // find all files whose permissions changed OR hijacked files // (might have become checked out) const StatusMap::Iterator send = m_statusMap->end(); for (StatusMap::Iterator it = m_statusMap->begin(); it != send; ++it) { - const bool permChanged = it.value().permissions != QFileInfo(topLevel, it.key()).permissions(); + const QFileInfo fi(topLevel, it.key()); + const bool permChanged = it.value().permissions != fi.permissions(); if (permChanged || it.value().status == FileStatus::Hijacked) { files.append(it.key()); it.value().status = FileStatus::Unknown; ++total; + } else if (isDynamic && !fi.isWritable()) { // assume a read only file is checked in + it.value().status = FileStatus::CheckedIn; + ++total; } } args << files; } else { - foreach (const QString &file, files) - m_plugin->setStatus(topLevelDir.relativeFilePath(file), FileStatus::Unknown, false); + foreach (const QString &file, files) { + if (isDynamic) { // assume a read only file is checked in + const QFileInfo fi(topLevelDir, file); + if (!fi.isWritable()) + m_plugin->setStatus(topLevelDir.relativeFilePath(file), FileStatus::CheckedIn, false); + } else { + m_plugin->setStatus(topLevelDir.relativeFilePath(file), FileStatus::Unknown, false); + } + } args << QLatin1String("-recurse"); QStringList vobs; |