aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clearcase/clearcaseplugin.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <[email protected]>2012-09-12 17:27:37 +0200
committerOswald Buddenhagen <[email protected]>2012-09-12 17:27:37 +0200
commite730e2bb8a2c499d135a472364959b1e48c0ad81 (patch)
treec276f9c7be5982958aaa3b5e6e727d9098093c79 /src/plugins/clearcase/clearcaseplugin.cpp
parentc12cefbb510758839024446e0c6cebf1a8ef8061 (diff)
parent77a6b71f72917939f2fd9c5e1915f8b0f5009949 (diff)
Merge remote-tracking branch 'gerrit/2.6'
Conflicts: src/libs/utils/environment.cpp src/plugins/android/androidtoolchain.cpp src/plugins/projectexplorer/gcctoolchain.cpp src/plugins/qt4projectmanager/qt4buildconfiguration.cpp src/plugins/qtsupport/baseqtversion.cpp src/shared/proparser/qmakeevaluator.cpp Change-Id: I554e96445a4d2b9ba0cc173ecd766091ee921aa2
Diffstat (limited to 'src/plugins/clearcase/clearcaseplugin.cpp')
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 85d770972ff..8c9044a2cc1 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -202,6 +202,7 @@ void ClearCasePlugin::cleanCheckInMessageFile()
if (!m_checkInMessageFileName.isEmpty()) {
QFile::remove(m_checkInMessageFileName);
m_checkInMessageFileName.clear();
+ m_checkInView.clear();
}
}
@@ -496,7 +497,7 @@ bool ClearCasePlugin::submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *sub
void ClearCasePlugin::diffCheckInFiles(const QStringList &files)
{
- ccDiffWithPred(files);
+ ccDiffWithPred(m_checkInView, files);
}
static inline void setDiffBaseDirectory(Core::IEditor *editor, const QString &db)
@@ -563,7 +564,7 @@ ClearCaseSubmitEditor *ClearCasePlugin::openClearCaseSubmitEditor(const QString
QTC_CHECK(submitEditor);
submitEditor->registerActions(m_submitUndoAction, m_submitRedoAction, m_checkInSelectedAction, m_checkInDiffAction);
connect(submitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffCheckInFiles(QStringList)));
- submitEditor->setCheckScriptWorkingDirectory(currentState().topLevel());
+ submitEditor->setCheckScriptWorkingDirectory(m_checkInView);
return submitEditor;
}
@@ -738,18 +739,17 @@ QString ClearCasePlugin::ccGetFileVersion(const QString &workingDir, const QStri
return runCleartoolSync(workingDir, args).trimmed();
}
-void ClearCasePlugin::ccDiffWithPred(const QStringList &files)
+void ClearCasePlugin::ccDiffWithPred(const QString &workingDir, const QStringList &files)
{
if (ClearCase::Constants::debug)
qDebug() << Q_FUNC_INFO << files;
- QString topLevel = currentState().topLevel();
- const QString source = VcsBase::VcsBaseEditorWidget::getSource(topLevel, files);
+ const QString source = VcsBase::VcsBaseEditorWidget::getSource(workingDir, files);
QTextCodec *codec = source.isEmpty() ? static_cast<QTextCodec *>(0) : VcsBase::VcsBaseEditorWidget::getCodec(source);
if ((m_settings.diffType == GraphicalDiff) && (files.count() == 1)) {
QString file = files.first();
if (m_statusMap->value(file).status == FileStatus::Hijacked)
- diffGraphical(ccGetFileVersion(topLevel, file), file);
+ diffGraphical(ccGetFileVersion(workingDir, file), file);
else
diffGraphical(file);
return; // done here, diff is opened in a new window
@@ -762,7 +762,7 @@ void ClearCasePlugin::ccDiffWithPred(const QStringList &files)
QString result;
foreach (const QString &file, files) {
if (m_statusMap->value(QDir::fromNativeSeparators(file)).status == FileStatus::Hijacked)
- result += diffExternal(ccGetFileVersion(topLevel, file), file);
+ result += diffExternal(ccGetFileVersion(workingDir, file), file);
else
result += diffExternal(file);
}
@@ -771,20 +771,20 @@ void ClearCasePlugin::ccDiffWithPred(const QStringList &files)
// diff of a single file? re-use an existing view if possible to support
// the common usage pattern of continuously changing and diffing a file
- const QString tag = VcsBase::VcsBaseEditorWidget::editorTag(VcsBase::DiffOutput, topLevel, files);
+ const QString tag = VcsBase::VcsBaseEditorWidget::editorTag(VcsBase::DiffOutput, workingDir, files);
if (files.count() == 1) {
// Show in the same editor if diff has been executed before
if (Core::IEditor *existingEditor = VcsBase::VcsBaseEditorWidget::locateEditorByTag(tag)) {
existingEditor->createNew(result);
Core::EditorManager::activateEditor(existingEditor, Core::EditorManager::ModeSwitch);
- setDiffBaseDirectory(existingEditor, topLevel);
+ setDiffBaseDirectory(existingEditor, workingDir);
return;
}
diffname = QDir::toNativeSeparators(files.first());
}
const QString title = QString::fromLatin1("cc diff %1").arg(diffname);
Core::IEditor *editor = showOutputInEditor(title, result, VcsBase::DiffOutput, source, codec);
- setDiffBaseDirectory(editor, topLevel);
+ setDiffBaseDirectory(editor, workingDir);
VcsBase::VcsBaseEditorWidget::tagEditor(editor, tag);
ClearCaseEditor *diffEditorWidget = qobject_cast<ClearCaseEditor *>(editor->widget());
QTC_ASSERT(diffEditorWidget, return);
@@ -884,7 +884,7 @@ void ClearCasePlugin::diffCurrentFile()
{
const VcsBase::VcsBasePluginState state = currentState();
QTC_ASSERT(state.hasFile(), return);
- ccDiffWithPred(QStringList(state.relativeCurrentFile()));
+ ccDiffWithPred(state.topLevel(), QStringList(state.relativeCurrentFile()));
}
void ClearCasePlugin::startCheckInCurrentFile()
@@ -974,6 +974,7 @@ void ClearCasePlugin::startCheckIn(const QString &workingDir, const QStringList
return;
}
m_checkInMessageFileName = saver.fileName();
+ m_checkInView = workingDir;
// Create a submit editor and set file list
ClearCaseSubmitEditor *editor = openClearCaseSubmitEditor(m_checkInMessageFileName);
editor->setStatusList(files);
@@ -1373,10 +1374,9 @@ bool ClearCasePlugin::vcsCheckIn(const QString &messageFile, const QStringList &
if (files.isEmpty())
return true;
const QString title = QString::fromLatin1("Checkin %1").arg(files.join(QLatin1String("; ")));
- QString workingDir = currentState().topLevel();
typedef QSharedPointer<Core::FileChangeBlocker> FCBPointer;
replaceActivity &= (activity != QLatin1String(Constants::KEEP_ACTIVITY));
- if (replaceActivity && !vcsSetActivity(workingDir, title, activity))
+ if (replaceActivity && !vcsSetActivity(m_checkInView, title, activity))
return false;
QFile msgFile(messageFile);
msgFile.open(QFile::ReadOnly | QFile::Text);
@@ -1395,11 +1395,11 @@ bool ClearCasePlugin::vcsCheckIn(const QString &messageFile, const QStringList &
args << files;
QList<FCBPointer> blockers;
foreach (QString fileName, files) {
- FCBPointer fcb(new Core::FileChangeBlocker(QFileInfo(workingDir, fileName).canonicalFilePath()));
+ FCBPointer fcb(new Core::FileChangeBlocker(QFileInfo(m_checkInView, fileName).canonicalFilePath()));
blockers.append(fcb);
}
const ClearCaseResponse response =
- runCleartool(workingDir, args, m_settings.longTimeOutMS(), ShowStdOutInLogWindow);
+ runCleartool(m_checkInView, args, m_settings.longTimeOutMS(), ShowStdOutInLogWindow);
QRegExp checkedIn(QLatin1String("Checked in \\\"([^\"]*)\\\""));
bool anySucceeded = false;
int offset = checkedIn.indexIn(response.stdOut);