diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 8b89f7f7be71b801788929a78f09ef648856d7dc..3ad47bd62048ea1c6f7dca4a5ecd57705485cb49 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -637,7 +637,7 @@ public: const QString &directory, bool enableAnnotationContextMenu, const QStringList &args, - const QString &fileName) : + const QStringList &fileNames) : BaseGitDiffArgumentsWidget(client, directory, args), m_client(client), m_workingDirectory(directory), @@ -657,24 +657,24 @@ public: QToolButton *graphButton = addToggleButton(graphArguments, tr("Graph"), tr("Show textual graph log.")); mapSetting(graphButton, m_client->settings()->boolPointer(GitSettings::graphLogKey)); - setFileName(fileName); + setFileNames(fileNames); } - void setFileName(const QString &fileNames) + void setFileNames(const QStringList &fileNames) { - m_fileName = fileNames; + m_fileNames = fileNames; } void executeCommand() { - m_client->log(m_workingDirectory, m_fileName, m_enableAnnotationContextMenu, baseArguments()); + m_client->log(m_workingDirectory, m_fileNames, m_enableAnnotationContextMenu, baseArguments()); } private: GitClient *m_client; QString m_workingDirectory; bool m_enableAnnotationContextMenu; - QString m_fileName; + QStringList m_fileNames; }; class ConflictHandler : public QObject @@ -1113,19 +1113,20 @@ void GitClient::status(const QString &workingDirectory) Qt::QueuedConnection); } -void GitClient::log(const QString &workingDirectory, const QString &fileName, +void GitClient::log(const QString &workingDirectory, const QStringList &fileNames, bool enableAnnotationContextMenu, const QStringList &args) { - const QString msgArg = fileName.isEmpty() ? workingDirectory : fileName; + const QString msgArg = fileNames.empty() ? workingDirectory : + fileNames.join(QLatin1String(", ")); const QString title = tr("Git Log \"%1\"").arg(msgArg); const Core::Id editorId = Git::Constants::GIT_LOG_EDITOR_ID; - const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName); + const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileNames); VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile); if (!editor) editor = createVcsEditor(editorId, title, sourceFile, CodecLogOutput, "logFileName", sourceFile, new GitLogArgumentsWidget(this, workingDirectory, enableAnnotationContextMenu, - args, fileName)); + args, fileNames)); editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu); editor->setDiffBaseDirectory(workingDirectory); @@ -1139,13 +1140,13 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName, GitLogArgumentsWidget *argWidget = qobject_cast<GitLogArgumentsWidget *>(editor->configurationWidget()); argWidget->setBaseArguments(args); - argWidget->setFileName(fileName); + argWidget->setFileNames(fileNames); QStringList userArgs = argWidget->arguments(); arguments.append(userArgs); - if (!fileName.isEmpty()) - arguments << QLatin1String("--") << fileName; + if (!fileNames.isEmpty()) + arguments << QLatin1String("--") << fileNames; executeGit(workingDirectory, arguments, editor); } diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index fa7ac9a921215148fb3d10e9f46d1f1731ef5c75..47e27ccf5b975ac379498ded12550844d9bebac6 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -146,7 +146,7 @@ public: void merge(const QString &workingDirectory, const QStringList &unmergedFileNames = QStringList()); void status(const QString &workingDirectory); - void log(const QString &workingDirectory, const QString &fileName = QString(), + void log(const QString &workingDirectory, const QStringList &fileNames = QStringList(), bool enableAnnotationContextMenu = false, const QStringList &args = QStringList()); void blame(const QString &workingDirectory, const QStringList &args, const QString &fileName, const QString &revision = QString(), int lineNumber = -1); diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 1692b780d2646d65b6d692a3a4444d3b45833241..6801a973900a01ca5c034a3a63a4c9586df0c10e 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -744,7 +744,7 @@ void GitPlugin::diffCurrentProject() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasProject(), return); - m_gitClient->diff(state.currentProjectTopLevel(), QStringList(state.relativeCurrentProject())); + m_gitClient->diff(state.currentProjectTopLevel(), state.relativeCurrentProject()); } void GitPlugin::diffRepository() @@ -758,7 +758,7 @@ void GitPlugin::logFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); - m_gitClient->log(state.currentFileTopLevel(), state.relativeCurrentFile(), true); + m_gitClient->log(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile()), true); } void GitPlugin::blameFile() diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index e47fb10f06435494326a58598164fada5ad15577..9d1905ccc7cf85d418730bc8fa4bca2f775d2c48 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -404,12 +404,13 @@ QString VcsBasePluginState::currentProjectTopLevel() const return data->m_state.currentProjectTopLevel; } -QString VcsBasePluginState::relativeCurrentProject() const +QStringList VcsBasePluginState::relativeCurrentProject() const { - QTC_ASSERT(hasProject(), return QString()); + QStringList rc; + QTC_ASSERT(hasProject(), return rc); if (data->m_state.currentProjectTopLevel != data->m_state.currentProjectPath) - return QDir(data->m_state.currentProjectTopLevel).relativeFilePath(data->m_state.currentProjectPath); - return QString(); + rc.append(QDir(data->m_state.currentProjectTopLevel).relativeFilePath(data->m_state.currentProjectPath)); + return rc; } bool VcsBasePluginState::hasTopLevel() const diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h index f657f55871527fcd6a6597b0b75b8e3d72567a77..8c1f5fe39b191a0454c985d8b3e1c86413db9c78 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.h +++ b/src/plugins/vcsbase/vcsbaseplugin.h @@ -96,7 +96,7 @@ public: /* Convenience: Returns project path relative to top level if it * differs from top level (else empty()) as an argument list to do * eg a 'vcs diff <args>' */ - QString relativeCurrentProject() const; + QStringList relativeCurrentProject() const; // Top level directory for actions on the top level. Preferably // the file one.