summaryrefslogtreecommitdiff
path: root/src/plugins/clearcase
diff options
context:
space:
mode:
authorKnut Petter Svendsen <knutpett@pvv.org>2013-04-02 13:03:24 +0200
committerOrgad Shaneh <orgads@gmail.com>2013-04-11 16:52:38 +0200
commit567098f210a7f73b98f02132a545bd5b5420e5a4 (patch)
tree3b46aa7f9146b75ca71753db5645f1a7f2c8b01f /src/plugins/clearcase
parent6d3e0fbd04b66e4ee4e41cd44daba63590b3125b (diff)
downloadqt-creator-567098f210a7f73b98f02132a545bd5b5420e5a4.tar.gz
ClearCase: Fixed get active VOBs
The correct way to check if a VOB is active (mounted) is to check for a "*" in the output of "cleartool lsvob". On windows a directory for each active VOB exists under topLevel, but this is not true for unix where directories (mount points) for all VOBs exists always. Change-Id: Iccb0e38a39dfcae72326d68b9ff43b2555187f6c Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/clearcase')
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 43023fa91f..0da8dd8d0b 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -555,21 +555,40 @@ QString ClearCasePlugin::ccGetPredecessor(const QString &version) const
return response.stdOut;
}
+//! Get a list of paths to active VOBs.
+//! Paths are relative to topLevel
QStringList ClearCasePlugin::ccGetActiveVobs() const
{
QStringList res;
QStringList args(QLatin1String("lsvob"));
- args << QLatin1String("-short");
- QString topLevel = currentState().topLevel();
+ const QString topLevel = currentState().topLevel();
const ClearCaseResponse response =
runCleartool(topLevel, args, m_settings.timeOutMS(), SilentRun);
if (response.error)
return res;
- foreach (QString dir, response.stdOut.split(QLatin1Char('\n'), QString::SkipEmptyParts)) {
- dir = dir.mid(1); // omit first slash
- QFileInfo fi(topLevel, dir);
- if (fi.exists())
- res.append(dir);
+
+ // format of output unix:
+ // * /path/to/vob /path/to/vob/storage.vbs <and some text omitted here>
+ // format of output windows:
+ // * \vob \\share\path\to\vob\storage.vbs <and some text omitted here>
+ QString prefix = topLevel;
+ if (!prefix.endsWith(QLatin1Char('/')))
+ prefix += QLatin1Char('/');
+
+ foreach (const QString &line, response.stdOut.split(QLatin1Char('\n'), QString::SkipEmptyParts)) {
+ const bool isActive = line.at(0) == QLatin1Char('*');
+ if (!isActive)
+ continue;
+
+ const QString dir =
+ QDir::fromNativeSeparators(line.mid(3, line.indexOf(QLatin1Char(' '), 3) - 3));
+ const QString relativeDir = QDir(topLevel).relativeFilePath(dir);
+
+ // Snapshot views does not necessarily have all active VOBs loaded, so we'll have to
+ // check if the dirs exists as well. Else the command will work, but the output will
+ // complain about the element not being loaded.
+ if (QFile::exists(prefix + relativeDir))
+ res.append(relativeDir);
}
return res;
}