ClearCase: Support also ".view.dat" as repository root indicator

Change-Id: Iabae8151c3334dadb60e62258cb4f7d541335dda
Reviewed-by: Knut Petter Svendsen <knutpett@pvv.org>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2013-02-03 23:30:22 +02:00
committed by Orgad Shaneh
parent a35f376369
commit 75ef7e84f9
2 changed files with 21 additions and 4 deletions

View File

@@ -37,7 +37,6 @@ namespace ClearCase {
namespace Constants {
const char VCS_ID_CLEARCASE[] = "E.ClearCase";
const char CLEARCASE_ROOT_FILE[] = "view.dat";
const char CLEARCASE_SUBMIT_MIMETYPE[] = "application/vnd.audc.text.clearcase.submit";
const char CLEARCASECHECKINEDITOR[] = "ClearCase Check In Editor";
const char CLEARCASECHECKINEDITOR_ID[] = "ClearCase Check In Editor";

View File

@@ -118,6 +118,7 @@ static const char CMD_ID_UPDATEINDEX[] = "ClearCase.UpdateIndex";
static const char CMD_ID_UPDATE_VIEW[] = "ClearCase.UpdateView";
static const char CMD_ID_CHECKIN_ALL[] = "ClearCase.CheckInAll";
static const char CMD_ID_STATUS[] = "ClearCase.Status";
static const char *CLEARCASE_ROOT_FILES[] = { "view.dat", ".view.dat" };
static const VcsBase::VcsBaseEditorParameters editorParameters[] = {
{
@@ -219,10 +220,27 @@ bool ClearCasePlugin::isCheckInEditorOpen() const
return !m_checkInMessageFileName.isEmpty();
}
static QString ccFindRepositoryForDirectory(const QString &dirS)
{
const QString home = QDir::homePath();
QDir directory(dirS);
do {
const QString absDirPath = directory.absolutePath();
if (directory.isRoot() || absDirPath == home)
break;
for (uint i = 0; i < sizeof(CLEARCASE_ROOT_FILES) / sizeof(*CLEARCASE_ROOT_FILES); ++i)
if (QFileInfo(directory, QLatin1String(CLEARCASE_ROOT_FILES[i])).isFile())
return absDirPath;
} while (directory.cdUp());
return QString();
}
/*! Find top level for view that contains \a directory
*
* - Snapshot Views will have the CLEARCASE_ROOT_FILE (view.dat) in its top dir
* - Dynamic views can either be
* - Snapshot view has one of CLEARCASE_ROOT_FILES (view.dat or .view.dat) in its top dir
* - Dynamic view can either be
* - M:/view_name,
* - or mapped to a drive letter, like Z:/
* (drive letters are just examples)
@@ -235,7 +253,7 @@ QString ClearCasePlugin::findTopLevel(const QString &directory) const
// Snapshot view
QString topLevel =
findRepositoryForDirectory(directory, QLatin1String(ClearCase::Constants::CLEARCASE_ROOT_FILE));
ccFindRepositoryForDirectory(directory);
if (!topLevel.isEmpty() || !clearCaseControl()->isConfigured())
return topLevel;