forked from qt-creator/qt-creator
Vcs: Move annotate and annotateRevisionRequested into VcsBaseClientImpl
... and use that in the Git client. Change-Id: Ie70ec0d5908776d11eb69613d45f565d4f0ce32b Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
@@ -955,51 +955,37 @@ void GitClient::show(const QString &source, const QString &id, const QString &na
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
void GitClient::annotate(const QString &workingDir, const QString &file, const QString &revision,
|
||||||
const QString &change, int lineNumber)
|
int lineNumber, const QStringList &extraOptions)
|
||||||
{
|
|
||||||
QString sha1 = change;
|
|
||||||
// This might be invoked with a verbose revision description
|
|
||||||
// "SHA1 author subject" from the annotation context menu. Strip the rest.
|
|
||||||
const int blankPos = sha1.indexOf(QLatin1Char(' '));
|
|
||||||
if (blankPos != -1)
|
|
||||||
sha1.truncate(blankPos);
|
|
||||||
blame(workingDirectory, QStringList(), file, sha1, lineNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GitClient::blame(const QString &workingDirectory,
|
|
||||||
const QStringList &args,
|
|
||||||
const QString &fileName,
|
|
||||||
const QString &revision,
|
|
||||||
int lineNumber)
|
|
||||||
{
|
{
|
||||||
const Id editorId = Git::Constants::GIT_BLAME_EDITOR_ID;
|
const Id editorId = Git::Constants::GIT_BLAME_EDITOR_ID;
|
||||||
const QString id = VcsBaseEditor::getTitleId(workingDirectory, QStringList(fileName), revision);
|
const QString id = VcsBaseEditor::getTitleId(workingDir, QStringList(file), revision);
|
||||||
const QString title = tr("Git Blame \"%1\"").arg(id);
|
const QString title = tr("Git Blame \"%1\"").arg(id);
|
||||||
const QString sourceFile = VcsBaseEditor::getSource(workingDirectory, fileName);
|
const QString sourceFile = VcsBaseEditor::getSource(workingDir, file);
|
||||||
|
|
||||||
VcsBaseEditorWidget *editor = findExistingVCSEditor("blameFileName", id);
|
VcsBaseEditorWidget *editor = findExistingVCSEditor("blameFileName", id);
|
||||||
if (!editor) {
|
if (!editor) {
|
||||||
auto *argWidget = new GitBlameArgumentsWidget(settings());
|
auto *argWidget = new GitBlameArgumentsWidget(settings());
|
||||||
argWidget->setBaseArguments(args);
|
argWidget->setBaseArguments(extraOptions);
|
||||||
connect(argWidget, &VcsBaseEditorParameterWidget::commandExecutionRequested,
|
connect(argWidget, &VcsBaseEditorParameterWidget::commandExecutionRequested,
|
||||||
[=] {
|
[=] {
|
||||||
const int line = VcsBaseEditor::lineNumberOfCurrentEditor();
|
const int line = VcsBaseEditor::lineNumberOfCurrentEditor();
|
||||||
blame(workingDirectory, args, fileName, revision, line);
|
annotate(workingDir, file, revision, line, extraOptions);
|
||||||
} );
|
} );
|
||||||
editor = createVcsEditor(editorId, title, sourceFile, codecFor(CodecSource, sourceFile),
|
editor = createVcsEditor(editorId, title, sourceFile, codecFor(CodecSource, sourceFile),
|
||||||
"blameFileName", id);
|
"blameFileName", id);
|
||||||
editor->setConfigurationWidget(argWidget);
|
editor->setConfigurationWidget(argWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
editor->setWorkingDirectory(workingDirectory);
|
editor->setWorkingDirectory(workingDir);
|
||||||
QStringList arguments(QLatin1String("blame"));
|
QStringList arguments(QLatin1String("blame"));
|
||||||
arguments << QLatin1String("--root");
|
arguments << QLatin1String("--root");
|
||||||
arguments.append(editor->configurationWidget()->arguments());
|
arguments.append(editor->configurationWidget()->arguments());
|
||||||
arguments << QLatin1String("--") << fileName;
|
arguments.append(extraOptions);
|
||||||
|
arguments << QLatin1String("--") << file;
|
||||||
if (!revision.isEmpty())
|
if (!revision.isEmpty())
|
||||||
arguments << revision;
|
arguments << revision;
|
||||||
executeGit(workingDirectory, arguments, editor, false, 0, lineNumber);
|
executeGit(workingDir, arguments, editor, false, 0, lineNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::synchronousCheckout(const QString &workingDirectory,
|
bool GitClient::synchronousCheckout(const QString &workingDirectory,
|
||||||
|
@@ -162,8 +162,9 @@ public:
|
|||||||
void log(const QString &workingDirectory, const QString &fileName = QString(),
|
void log(const QString &workingDirectory, const QString &fileName = QString(),
|
||||||
bool enableAnnotationContextMenu = false, const QStringList &args = QStringList());
|
bool enableAnnotationContextMenu = false, const QStringList &args = QStringList());
|
||||||
void reflog(const QString &workingDirectory);
|
void reflog(const QString &workingDirectory);
|
||||||
void blame(const QString &workingDirectory, const QStringList &args, const QString &fileName,
|
void annotate(const QString &workingDir, const QString &file,
|
||||||
const QString &revision = QString(), int lineNumber = -1);
|
const QString &revision = QString(), int lineNumber = -1,
|
||||||
|
const QStringList &extraOptions = QStringList()) override;
|
||||||
void reset(const QString &workingDirectory, const QString &argument, const QString &commit = QString());
|
void reset(const QString &workingDirectory, const QString &argument, const QString &commit = QString());
|
||||||
void addFile(const QString &workingDirectory, const QString &fileName);
|
void addFile(const QString &workingDirectory, const QString &fileName);
|
||||||
bool synchronousLog(const QString &workingDirectory,
|
bool synchronousLog(const QString &workingDirectory,
|
||||||
@@ -357,9 +358,6 @@ private slots:
|
|||||||
void branchesForCommit(const QString &revision);
|
void branchesForCommit(const QString &revision);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
|
||||||
const QString &change, int lineNumber) override;
|
|
||||||
|
|
||||||
void stage(const QString &patch, bool revert);
|
void stage(const QString &patch, bool revert);
|
||||||
VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty,
|
VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty,
|
||||||
const QString &dynamicPropertyValue) const;
|
const QString &dynamicPropertyValue) const;
|
||||||
|
@@ -715,7 +715,7 @@ void GitPlugin::blameFile()
|
|||||||
const VcsBasePluginState state = currentState();
|
const VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasFile(), return);
|
QTC_ASSERT(state.hasFile(), return);
|
||||||
const int lineNumber = VcsBaseEditor::lineNumberOfCurrentEditor(state.currentFile());
|
const int lineNumber = VcsBaseEditor::lineNumberOfCurrentEditor(state.currentFile());
|
||||||
m_gitClient->blame(state.currentFileTopLevel(), QStringList(), state.relativeCurrentFile(), QString(), lineNumber);
|
m_gitClient->annotate(state.currentFileTopLevel(), state.relativeCurrentFile(), QString(), lineNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitPlugin::logProject()
|
void GitPlugin::logProject()
|
||||||
|
@@ -164,7 +164,7 @@ bool GitVersionControl::managesFile(const QString &workingDirectory, const QStri
|
|||||||
bool GitVersionControl::vcsAnnotate(const QString &file, int line)
|
bool GitVersionControl::vcsAnnotate(const QString &file, int line)
|
||||||
{
|
{
|
||||||
const QFileInfo fi(file);
|
const QFileInfo fi(file);
|
||||||
m_client->blame(fi.absolutePath(), QStringList(), fi.fileName(), QString(), line);
|
m_client->annotate(fi.absolutePath(), fi.fileName(), QString(), line);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -175,6 +175,19 @@ void VcsBaseClientImpl::resetCachedVcsInfo(const QString &workingDir)
|
|||||||
Core::VcsManager::resetVersionControlForDirectory(workingDir);
|
Core::VcsManager::resetVersionControlForDirectory(workingDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VcsBaseClientImpl::annotateRevisionRequested(const QString &workingDirectory,
|
||||||
|
const QString &file, const QString &change,
|
||||||
|
int line)
|
||||||
|
{
|
||||||
|
QString changeCopy = change;
|
||||||
|
// This might be invoked with a verbose revision description
|
||||||
|
// "SHA1 author subject" from the annotation context menu. Strip the rest.
|
||||||
|
const int blankPos = changeCopy.indexOf(QLatin1Char(' '));
|
||||||
|
if (blankPos != -1)
|
||||||
|
changeCopy.truncate(blankPos);
|
||||||
|
annotate(workingDirectory, file, changeCopy, line);
|
||||||
|
}
|
||||||
|
|
||||||
int VcsBaseClientImpl::vcsTimeout() const
|
int VcsBaseClientImpl::vcsTimeout() const
|
||||||
{
|
{
|
||||||
return settings().intValue(VcsBaseClientSettings::timeoutKey);
|
return settings().intValue(VcsBaseClientSettings::timeoutKey);
|
||||||
@@ -650,19 +663,6 @@ void VcsBaseClient::statusParser(const QString &text)
|
|||||||
emit parsedStatus(lineInfoList);
|
emit parsedStatus(lineInfoList);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VcsBaseClient::annotateRevisionRequested(const QString &workingDirectory,
|
|
||||||
const QString &file, const QString &change,
|
|
||||||
int line)
|
|
||||||
{
|
|
||||||
QString changeCopy = change;
|
|
||||||
// This might be invoked with a verbose revision description
|
|
||||||
// "SHA1 author subject" from the annotation context menu. Strip the rest.
|
|
||||||
const int blankPos = changeCopy.indexOf(QLatin1Char(' '));
|
|
||||||
if (blankPos != -1)
|
|
||||||
changeCopy.truncate(blankPos);
|
|
||||||
annotate(workingDirectory, file, changeCopy, line);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace VcsBase
|
} // namespace VcsBase
|
||||||
|
|
||||||
#include "moc_vcsbaseclient.cpp"
|
#include "moc_vcsbaseclient.cpp"
|
||||||
|
@@ -95,10 +95,15 @@ public:
|
|||||||
|
|
||||||
virtual QProcessEnvironment processEnvironment() const;
|
virtual QProcessEnvironment processEnvironment() const;
|
||||||
|
|
||||||
|
// VCS functionality:
|
||||||
|
virtual void annotate(const QString &workingDir, const QString &file,
|
||||||
|
const QString &revision = QString(), int lineNumber = -1,
|
||||||
|
const QStringList &extraOptions = QStringList()) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resetCachedVcsInfo(const QString &workingDir);
|
void resetCachedVcsInfo(const QString &workingDir);
|
||||||
virtual void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
virtual void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
||||||
const QString &change, int line) = 0;
|
const QString &change, int line);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
@@ -179,9 +184,6 @@ public slots:
|
|||||||
const QStringList &extraOptions = QStringList());
|
const QStringList &extraOptions = QStringList());
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
|
||||||
const QString &change, int line);
|
|
||||||
|
|
||||||
enum VcsCommandTag
|
enum VcsCommandTag
|
||||||
{
|
{
|
||||||
CreateRepositoryCommand,
|
CreateRepositoryCommand,
|
||||||
|
Reference in New Issue
Block a user