diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-10-06 20:47:29 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2013-10-10 18:59:43 +0200 |
commit | 7b08d993bff0951428d6a7cb2d402e9571df0550 (patch) | |
tree | 800d3d234873382f6f9d6d0ad2132fbed048f06e | |
parent | 0bb9ab131eeb7ae1737a6dab32d703dab6239b8c (diff) | |
download | qt-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.cpp | 14 | ||||
-rw-r--r-- | src/plugins/clearcase/clearcaseplugin.h | 2 | ||||
-rw-r--r-- | src/plugins/cvs/cvscontrol.cpp | 3 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.h | 3 | ||||
-rw-r--r-- | src/plugins/git/gitclient.cpp | 10 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 3 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.h | 3 | ||||
-rw-r--r-- | src/plugins/perforce/perforceversioncontrol.cpp | 3 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.h | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.cpp | 13 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.h | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditor.cpp | 15 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditor.h | 3 |
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); |