aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugues Delorme <delorme.hugues@fougsys.fr>2015-01-26 15:29:09 +0100
committerHugues Delorme <delorme.hugues@fougsys.fr>2015-01-26 17:49:43 +0100
commitba8c7c91d0c5954dea951cb05d376925f84172a8 (patch)
tree413044e0c2a21417d34f1e27016d62459eff3251
parentea1efad6f126845d118070be422185b7d917a5c9 (diff)
Svn: add "Verbose" option for log command
Change-Id: If58a98ff45ceba251c6972099d38d2ce506422c9 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
-rw-r--r--src/plugins/subversion/subversionclient.cpp41
-rw-r--r--src/plugins/subversion/subversionclient.h6
-rw-r--r--src/plugins/subversion/subversionplugin.cpp36
-rw-r--r--src/plugins/subversion/subversionsettings.cpp2
-rw-r--r--src/plugins/subversion/subversionsettings.h1
5 files changed, 49 insertions, 37 deletions
diff --git a/src/plugins/subversion/subversionclient.cpp b/src/plugins/subversion/subversionclient.cpp
index fffb63a8d4..06fab66b92 100644
--- a/src/plugins/subversion/subversionclient.cpp
+++ b/src/plugins/subversion/subversionclient.cpp
@@ -59,9 +59,23 @@ using namespace Core;
namespace Subversion {
namespace Internal {
+class SubversionLogParameterWidget : public VcsBaseEditorParameterWidget
+{
+ Q_OBJECT
+public:
+ SubversionLogParameterWidget(SubversionSettings *settings, QWidget *parent = 0) :
+ VcsBaseEditorParameterWidget(parent)
+ {
+ mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
+ tr("Show files changed in each revision")),
+ settings->boolPointer(SubversionSettings::logVerboseKey));
+ }
+};
+
SubversionClient::SubversionClient(SubversionSettings *settings) :
VcsBaseClient(settings)
{
+ setLogParameterWidgetCreator([=] { return new SubversionLogParameterWidget(settings); });
}
SubversionSettings *SubversionClient::settings() const
@@ -102,8 +116,10 @@ void SubversionClient::commit(const QString &repositoryRoot,
Core::Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const
{
- // TODO: add some code here
- Q_UNUSED(cmd)
+ switch (cmd) {
+ case VcsBaseClient::LogCommand: return Constants::SUBVERSION_LOG_EDITOR_ID;
+ case VcsBaseClient::AnnotateCommand: return Constants::SUBVERSION_BLAME_EDITOR_ID;
+ }
return Core::Id();
}
@@ -339,6 +355,27 @@ void SubversionClient::diff(const QString &workingDirectory, const QStringList &
reloader->requestReload();
}
+void SubversionClient::log(const QString &workingDir,
+ const QStringList &files,
+ const QStringList &extraOptions,
+ bool enableAnnotationContextMenu)
+{
+ const auto logCount = settings()->intValue(SubversionSettings::logCountKey);
+ QStringList svnExtraOptions =
+ QStringList(extraOptions)
+ << SubversionClient::addAuthenticationOptions(*settings());
+ if (logCount > 0)
+ svnExtraOptions << QLatin1String("-l") << QString::number(logCount);
+
+ QStringList nativeFiles;
+ foreach (const QString& file, files)
+ nativeFiles.append(QDir::toNativeSeparators(file));
+
+ // subversion stores log in UTF-8 and returns it back in user system locale.
+ // So we do not need to encode it.
+ VcsBaseClient::log(workingDir, files, svnExtraOptions, enableAnnotationContextMenu);
+}
+
void SubversionClient::describe(const QString &workingDirectory, int changeNumber, const QString &title)
{
const QString documentId = VcsBaseEditor::editorTag(DiffOutput,
diff --git a/src/plugins/subversion/subversionclient.h b/src/plugins/subversion/subversionclient.h
index 5bdc35b96a..83514690be 100644
--- a/src/plugins/subversion/subversionclient.h
+++ b/src/plugins/subversion/subversionclient.h
@@ -63,6 +63,12 @@ public:
void diff(const QString &workingDirectory, const QStringList &files,
const QStringList &extraOptions);
+
+ void log(const QString &workingDir,
+ const QStringList &files = QStringList(),
+ const QStringList &extraOptions = QStringList(),
+ bool enableAnnotationContextMenu = false) Q_DECL_OVERRIDE;
+
void describe(const QString &workingDirectory, int changeNumber, const QString &title);
QString findTopLevelForFile(const QFileInfo &file) const;
QStringList revisionSpec(const QString &revision) const;
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index ef16cd4bb9..bb0582f973 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -770,41 +770,7 @@ void SubversionPlugin::filelog(const QString &workingDir,
const QString &file,
bool enableAnnotationContextMenu)
{
- // no need for temp file
- QStringList args(QLatin1String("log"));
- args << SubversionClient::addAuthenticationOptions(settings());
- if (m_settings.intValue(SubversionSettings::logCountKey) > 0) {
- args << QLatin1String("-l")
- << QString::number(m_settings.intValue(SubversionSettings::logCountKey));
- }
- if (!file.isEmpty())
- args.append(QDir::toNativeSeparators(file));
-
- // subversion stores log in UTF-8 and returns it back in user system locale.
- // So we do not need to encode it.
- const SubversionResponse response =
- runSvn(workingDir, args, m_settings.timeOutMs(),
- SshPasswordPrompt, 0/*codec*/);
- if (response.error)
- return;
-
- // Re-use an existing view if possible to support
- // the common usage pattern of continuously changing and diffing a file
-
- const QString id = VcsBaseEditor::getTitleId(workingDir, QStringList(file));
- const QString tag = VcsBaseEditor::editorTag(LogOutput, workingDir,
- QStringList(file));
- if (IEditor *editor = VcsBaseEditor::locateEditorByTag(tag)) {
- editor->document()->setContents(response.stdOut.toUtf8());
- EditorManager::activateEditor(editor);
- } else {
- const QString title = QString::fromLatin1("svn log %1").arg(id);
- const QString source = VcsBaseEditor::getSource(workingDir, file);
- IEditor *newEditor = showOutputInEditor(title, response.stdOut, LogOutput, source, /*codec*/0);
- VcsBaseEditor::tagEditor(newEditor, tag);
- if (enableAnnotationContextMenu)
- VcsBaseEditor::getVcsBaseEditor(newEditor)->setFileLogAnnotateEnabled(true);
- }
+ m_client->log(workingDir, QStringList(file), QStringList(), enableAnnotationContextMenu);
}
void SubversionPlugin::updateProject()
diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp
index 803dd09b64..0ee9bb4352 100644
--- a/src/plugins/subversion/subversionsettings.cpp
+++ b/src/plugins/subversion/subversionsettings.cpp
@@ -43,6 +43,7 @@ const QLatin1String SubversionSettings::userKey("User");
const QLatin1String SubversionSettings::passwordKey("Password");
const QLatin1String SubversionSettings::spaceIgnorantAnnotationKey("SpaceIgnorantAnnotation");
const QLatin1String SubversionSettings::diffIgnoreWhiteSpaceKey("DiffIgnoreWhiteSpace");
+const QLatin1String SubversionSettings::logVerboseKey("LogVerbose");
SubversionSettings::SubversionSettings()
{
@@ -54,6 +55,7 @@ SubversionSettings::SubversionSettings()
declareKey(passwordKey, QLatin1String(""));
declareKey(spaceIgnorantAnnotationKey, true);
declareKey(diffIgnoreWhiteSpaceKey, false);
+ declareKey(logVerboseKey, false);
}
bool SubversionSettings::hasAuthentication() const
diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h
index 51711ed01b..9505c242f6 100644
--- a/src/plugins/subversion/subversionsettings.h
+++ b/src/plugins/subversion/subversionsettings.h
@@ -44,6 +44,7 @@ public:
static const QLatin1String passwordKey;
static const QLatin1String spaceIgnorantAnnotationKey;
static const QLatin1String diffIgnoreWhiteSpaceKey;
+ static const QLatin1String logVerboseKey;
SubversionSettings();
bool hasAuthentication() const;