Commit 567098f2 authored by Knut Petter Svendsen's avatar Knut Petter Svendsen Committed by Orgad Shaneh
Browse files

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's avatarOrgad Shaneh <orgads@gmail.com>
parent 6d3e0fbd
......@@ -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;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment