aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clearcase/clearcasesync.cpp
diff options
context:
space:
mode:
authorKnut Petter Svendsen <knutpett@pvv.org>2013-04-02 21:15:35 +0200
committerKnut Petter Svendsen <knutpett@pvv.org>2013-04-05 15:06:46 +0200
commitc7cd4c9aa4aecbe028be5959cedecac1681dfa00 (patch)
treec53038f39b3d97d6f233c216dadc57311c458864 /src/plugins/clearcase/clearcasesync.cpp
parent75691393ec9bf87c290fb8e9d199cbeab7e726f8 (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 <orgads@gmail.com>
Diffstat (limited to 'src/plugins/clearcase/clearcasesync.cpp')
-rw-r--r--src/plugins/clearcase/clearcasesync.cpp19
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;