summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-10-06 20:47:29 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-10-10 18:59:43 +0200
commit7b08d993bff0951428d6a7cb2d402e9571df0550 (patch)
tree800d3d234873382f6f9d6d0ad2132fbed048f06e
parent0bb9ab131eeb7ae1737a6dab32d703dab6239b8c (diff)
downloadqt-creator-7b08d993bff0951428d6a7cb2d402e9571df0550.tar.gz
VCS: Pass workingDirectory for annotate
Required for supporting renames on annotate. The renamed file (and possibly its parent directory) doesn't exist anymore, so it shouldn't be passed as a working directory. Change-Id: I809e8df17c1dc5199e533b525244a668eccbcd5f Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp14
-rw-r--r--src/plugins/clearcase/clearcaseplugin.h2
-rw-r--r--src/plugins/cvs/cvscontrol.cpp3
-rw-r--r--src/plugins/cvs/cvsplugin.cpp10
-rw-r--r--src/plugins/cvs/cvsplugin.h3
-rw-r--r--src/plugins/git/gitclient.cpp10
-rw-r--r--src/plugins/git/gitclient.h3
-rw-r--r--src/plugins/perforce/perforceplugin.cpp10
-rw-r--r--src/plugins/perforce/perforceplugin.h3
-rw-r--r--src/plugins/perforce/perforceversioncontrol.cpp3
-rw-r--r--src/plugins/subversion/subversionplugin.cpp10
-rw-r--r--src/plugins/subversion/subversionplugin.h2
-rw-r--r--src/plugins/vcsbase/vcsbaseclient.cpp13
-rw-r--r--src/plugins/vcsbase/vcsbaseclient.h2
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.cpp15
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.h3
16 files changed, 58 insertions, 48 deletions
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 0ad3228d7a..70315932a1 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -1253,12 +1253,12 @@ void ClearCasePlugin::annotateCurrentFile()
vcsAnnotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void ClearCasePlugin::annotateVersion(const QString &file,
- const QString &revision,
- int lineNr)
+void ClearCasePlugin::annotateVersion(const QString &workingDirectory,
+ const QString &file,
+ const QString &revision,
+ int lineNr)
{
- const QFileInfo fi(file);
- vcsAnnotate(fi.absolutePath(), fi.fileName(), revision, lineNr);
+ vcsAnnotate(workingDirectory, file, revision, lineNr);
}
void ClearCasePlugin::vcsAnnotate(const QString &workingDir, const QString &file,
@@ -1402,8 +1402,8 @@ IEditor *ClearCasePlugin::showOutputInEditor(const QString& title, const QString
<< "Size= " << output.size() << " Type=" << editorType << debugCodec(codec);
QString s = title;
IEditor *editor = EditorManager::openEditorWithContents(id, &s, output.toUtf8());
- connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- this, SLOT(annotateVersion(QString,QString,int)));
+ connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ this, SLOT(annotateVersion(QString,QString,QString,int)));
ClearCaseEditor *e = qobject_cast<ClearCaseEditor*>(editor->widget());
if (!e)
return 0;
diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h
index fb011182da..6d62e2e5e8 100644
--- a/src/plugins/clearcase/clearcaseplugin.h
+++ b/src/plugins/clearcase/clearcaseplugin.h
@@ -185,7 +185,7 @@ private slots:
void startCheckInCurrentFile();
void historyCurrentFile();
void annotateCurrentFile();
- void annotateVersion(const QString &file, const QString &revision, int lineNumber);
+ void annotateVersion(const QString &workingDirectory, const QString &file, const QString &revision, int lineNumber);
void describe(const QString &source, const QString &changeNr);
void viewStatus();
void checkInSelected();
diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp
index e4ddcfd380..87fdc2cf24 100644
--- a/src/plugins/cvs/cvscontrol.cpp
+++ b/src/plugins/cvs/cvscontrol.cpp
@@ -148,7 +148,8 @@ bool CvsControl::vcsRemoveSnapshot(const QString &, const QString &)
bool CvsControl::vcsAnnotate(const QString &file, int line)
{
- m_plugin->vcsAnnotate(file, QString(), line);
+ const QFileInfo fi(file);
+ m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line);
return true;
}
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index fdbd7ea1c3..646bc6b087 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -923,10 +923,10 @@ void CvsPlugin::annotateCurrentFile()
annotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void CvsPlugin::vcsAnnotate(const QString &file, const QString &revision, int lineNumber)
+void CvsPlugin::vcsAnnotate(const QString &workingDirectory, const QString &file,
+ const QString &revision, int lineNumber)
{
- const QFileInfo fi(file);
- annotate(fi.absolutePath(), fi.fileName(), revision, lineNumber);
+ annotate(workingDirectory, file, revision, lineNumber);
}
bool CvsPlugin::edit(const QString &topLevel, const QStringList &files)
@@ -1274,8 +1274,8 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp
<< "source=" << source << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec);
QString s = title;
IEditor *editor = EditorManager::openEditorWithContents(id, &s, output.toUtf8());
- connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- this, SLOT(vcsAnnotate(QString,QString,int)));
+ connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ this, SLOT(vcsAnnotate(QString,QString,QString,int)));
CvsEditor *e = qobject_cast<CvsEditor*>(editor->widget());
if (!e)
return 0;
diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h
index 9608cd2e1b..ba5aad89b8 100644
--- a/src/plugins/cvs/cvsplugin.h
+++ b/src/plugins/cvs/cvsplugin.h
@@ -96,7 +96,8 @@ public:
static CvsPlugin *instance();
public slots:
- void vcsAnnotate(const QString &file, const QString &revision /* = QString() */, int lineNumber);
+ void vcsAnnotate(const QString &workingDirectory, const QString &file,
+ const QString &revision, int lineNumber);
private slots:
void addCurrentFile();
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 87fb48d6f3..bd6327ec92 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1038,8 +1038,8 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
m_msgWait.toUtf8());
outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue);
rc = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
- connect(rc, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- this, SLOT(slotBlameRevisionRequested(QString,QString,int)));
+ connect(rc, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ this, SLOT(slotBlameRevisionRequested(QString,QString,QString,int)));
QTC_ASSERT(rc, return 0);
rc->setSource(source);
if (codecType == CodecSource) {
@@ -1461,15 +1461,15 @@ void GitClient::saveSettings()
settings()->writeSettings(Core::ICore::settings());
}
-void GitClient::slotBlameRevisionRequested(const QString &source, QString change, int lineNumber)
+void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
+ QString change, int lineNumber)
{
// This might be invoked with a verbose revision description
// "SHA1 author subject" from the annotation context menu. Strip the rest.
const int blankPos = change.indexOf(QLatin1Char(' '));
if (blankPos != -1)
change.truncate(blankPos);
- const QFileInfo fi(source);
- blame(fi.absolutePath(), QStringList(), fi.fileName(), change, lineNumber);
+ blame(workingDirectory, QStringList(), file, change, lineNumber);
}
QTextCodec *GitClient::getSourceCodec(const QString &file) const
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 610a08498e..7517f2629a 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -335,7 +335,8 @@ public slots:
void saveSettings();
private slots:
- void slotBlameRevisionRequested(const QString &source, QString change, int lineNumber);
+ void slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
+ QString change, int lineNumber);
void finishSubmoduleUpdate();
void fetchFinished(const QVariant &cookie);
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index a4e42e28bd..ec8e13e5ee 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -692,10 +692,10 @@ void PerforcePlugin::annotate()
}
}
-void PerforcePlugin::vcsAnnotate(const QString &file, const QString &revision, int lineNumber)
+void PerforcePlugin::vcsAnnotate(const QString &workingDirectory, const QString &file,
+ const QString &revision, int lineNumber)
{
- const QFileInfo fi(file);
- annotate(fi.absolutePath(), fi.fileName(), revision, lineNumber);
+ annotate(workingDirectory, file, revision, lineNumber);
}
void PerforcePlugin::annotate(const QString &workingDir,
@@ -1166,8 +1166,8 @@ Core::IEditor *PerforcePlugin::showOutputInEditor(const QString &title, const QS
<< "Size= " << output.size() << " Type=" << editorType << debugCodec(codec);
QString s = title;
Core::IEditor *editor = Core::EditorManager::openEditorWithContents(id, &s, output.toUtf8());
- connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- this, SLOT(vcsAnnotate(QString,QString,int)));
+ connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ this, SLOT(vcsAnnotate(QString,QString,QString,int)));
PerforceEditor *e = qobject_cast<PerforceEditor*>(editor->widget());
if (!e)
return 0;
diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h
index 33d8f4737b..71e0a6e39d 100644
--- a/src/plugins/perforce/perforceplugin.h
+++ b/src/plugins/perforce/perforceplugin.h
@@ -105,7 +105,8 @@ public:
public slots:
void describe(const QString &source, const QString &n);
- void vcsAnnotate(const QString &file, const QString &revision /* = QString() */, int lineNumber);
+ void vcsAnnotate(const QString &workingDirectory, const QString &file,
+ const QString &revision, int lineNumber);
void p4Diff(const Perforce::Internal::PerforceDiffParameters &p);
private slots:
diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp
index 19303a66fa..a647733591 100644
--- a/src/plugins/perforce/perforceversioncontrol.cpp
+++ b/src/plugins/perforce/perforceversioncontrol.cpp
@@ -147,7 +147,8 @@ bool PerforceVersionControl::vcsRemoveSnapshot(const QString &, const QString &)
bool PerforceVersionControl::vcsAnnotate(const QString &file, int line)
{
- m_plugin->vcsAnnotate(file, QString(), line);
+ const QFileInfo fi(file);
+ m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line);
return true;
}
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index d41c1b2428..5f060a2081 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -940,12 +940,12 @@ void SubversionPlugin::annotateCurrentFile()
vcsAnnotate(state.currentFileTopLevel(), state.relativeCurrentFile());
}
-void SubversionPlugin::annotateVersion(const QString &file,
+void SubversionPlugin::annotateVersion(const QString &workingDirectory,
+ const QString &file,
const QString &revision,
int lineNr)
{
- const QFileInfo fi(file);
- vcsAnnotate(fi.absolutePath(), fi.fileName(), revision, lineNr);
+ vcsAnnotate(workingDirectory, file, revision, lineNr);
}
void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &file,
@@ -1177,8 +1177,8 @@ Core::IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const
<< "Size= " << output.size() << " Type=" << editorType << debugCodec(codec);
QString s = title;
Core::IEditor *editor = Core::EditorManager::openEditorWithContents(id, &s, output.toUtf8());
- connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- this, SLOT(annotateVersion(QString,QString,int)));
+ connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ this, SLOT(annotateVersion(QString,QString,QString,int)));
SubversionEditor *e = qobject_cast<SubversionEditor*>(editor->widget());
if (!e)
return 0;
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index f0664cc5c6..81a89b668e 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -131,7 +131,7 @@ private slots:
void revertAll();
void filelogCurrentFile();
void annotateCurrentFile();
- void annotateVersion(const QString &file, const QString &revision, int lineNumber);
+ void annotateVersion(const QString &workingDirectory, const QString &file, const QString &revision, int lineNumber);
void projectStatus();
void describe(const QString &source, const QString &changeNr);
void slotDescribe();
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp
index feb4c5588b..e68ae7c159 100644
--- a/src/plugins/vcsbase/vcsbaseclient.cpp
+++ b/src/plugins/vcsbase/vcsbaseclient.cpp
@@ -90,7 +90,8 @@ public:
VcsBaseClientPrivate(VcsBaseClient *client, VcsBaseClientSettings *settings);
void statusParser(const QString &text);
- void annotateRevision(QString source, QString change, int lineNumber);
+ void annotateRevision(const QString &workingDirectory, const QString &file,
+ QString change, int lineNumber);
void saveSettings();
void bindCommandToEditor(Command *cmd, VcsBaseEditorWidget *editor);
@@ -125,15 +126,15 @@ void VcsBaseClientPrivate::statusParser(const QString &text)
emit m_client->parsedStatus(lineInfoList);
}
-void VcsBaseClientPrivate::annotateRevision(QString source, QString change, int lineNumber)
+void VcsBaseClientPrivate::annotateRevision(const QString &workingDirectory, const QString &file,
+ QString change, int lineNumber)
{
// This might be invoked with a verbose revision description
// "SHA1 author subject" from the annotation context menu. Strip the rest.
const int blankPos = change.indexOf(QLatin1Char(' '));
if (blankPos != -1)
change.truncate(blankPos);
- const QFileInfo fi(source);
- m_client->annotate(fi.absolutePath(), fi.fileName(), change, lineNumber);
+ m_client->annotate(workingDirectory, file, change, lineNumber);
}
void VcsBaseClientPrivate::saveSettings()
@@ -574,8 +575,8 @@ VcsBase::VcsBaseEditorWidget *VcsBaseClient::createVcsEditor(Core::Id kind, QStr
outputEditor = Core::EditorManager::openEditorWithContents(kind, &title, progressMsg.toUtf8());
outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue);
baseEditor = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
- connect(baseEditor, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- this, SLOT(annotateRevision(QString,QString,int)));
+ connect(baseEditor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ this, SLOT(annotateRevision(QString,QString,QString,int)));
QTC_ASSERT(baseEditor, return 0);
baseEditor->setSource(source);
if (setSourceCodec)
diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h
index f4c9bf957f..2d3ff336a0 100644
--- a/src/plugins/vcsbase/vcsbaseclient.h
+++ b/src/plugins/vcsbase/vcsbaseclient.h
@@ -194,7 +194,7 @@ private:
VcsBaseClientPrivate *d;
Q_PRIVATE_SLOT(d, void statusParser(QString))
- Q_PRIVATE_SLOT(d, void annotateRevision(QString, QString, int))
+ Q_PRIVATE_SLOT(d, void annotateRevision(QString, QString, QString, int))
Q_PRIVATE_SLOT(d, void saveSettings())
Q_PRIVATE_SLOT(d, void commandFinishedGotoLine(QWidget *))
};
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 0c415cf8eb..766c02a6d5 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -158,7 +158,8 @@ public:
signals:
void describeRequested(const QString &source, const QString &change);
- void annotateRevisionRequested(const QString &source, const QString &change, int line);
+ void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
+ const QString &change, int line);
private:
Core::Id m_id;
@@ -818,8 +819,8 @@ TextEditor::BaseTextEditor *VcsBaseEditorWidget::createEditor()
// Pass on signals.
connect(this, SIGNAL(describeRequested(QString,QString)),
editor, SIGNAL(describeRequested(QString,QString)));
- connect(this, SIGNAL(annotateRevisionRequested(QString,QString,int)),
- editor, SIGNAL(annotateRevisionRequested(QString,QString,int)));
+ connect(this, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
+ editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)));
return editor;
}
@@ -1412,9 +1413,11 @@ void VcsBaseEditorWidget::addDiffActions(QMenu *, const DiffChunk &)
void VcsBaseEditorWidget::slotAnnotateRevision()
{
- if (const QAction *a = qobject_cast<const QAction *>(sender()))
- emit annotateRevisionRequested(source(), a->data().toString(),
- editor()->currentLine());
+ if (const QAction *a = qobject_cast<const QAction *>(sender())) {
+ QFileInfo fi(source());
+ emit annotateRevisionRequested(fi.absolutePath(), fi.fileName(),
+ a->data().toString(), currentLine);
+ }
}
QStringList VcsBaseEditorWidget::annotationPreviousVersions(const QString &) const
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index ae2587c88a..ccc0ee97f1 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -202,7 +202,8 @@ signals:
// handled by the editor manager for convenience. They are emitted
// for LogOutput/AnnotateOutput content types.
void describeRequested(const QString &source, const QString &change);
- void annotateRevisionRequested(const QString &source, const QString &change, int lineNumber);
+ void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
+ const QString &change, int lineNumber);
void diffChunkApplied(const VcsBase::DiffChunk &dc);
void diffChunkReverted(const VcsBase::DiffChunk &dc);