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>
This commit is contained in:
Orgad Shaneh
2013-10-06 20:47:29 +03:00
committed by Orgad Shaneh
parent 0bb9ab131e
commit 7b08d993bf
16 changed files with 58 additions and 48 deletions

View File

@@ -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