From c55b5b7b3176e5ee01abedafa448868fb6e4c315 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Tue, 5 Jan 2010 15:45:41 +0100 Subject: [PATCH] Git/SVN: Ignore whitespace in annotation/blame (introduce setting). Defaulting to true. Task-number: QTCREATORBUG-502 --- src/plugins/git/gitclient.cpp | 3 +++ src/plugins/git/gitsettings.cpp | 8 ++++++-- src/plugins/git/gitsettings.h | 1 + src/plugins/git/settingspage.cpp | 5 ++++- src/plugins/git/settingspage.ui | 10 ++++++++++ src/plugins/subversion/settingspage.cpp | 5 ++++- src/plugins/subversion/settingspage.ui | 7 +++++++ src/plugins/subversion/subversionplugin.cpp | 2 ++ src/plugins/subversion/subversionsettings.cpp | 9 +++++++-- src/plugins/subversion/subversionsettings.h | 1 + 10 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index c7e4468b7b3..a323454575f 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -302,6 +302,9 @@ void GitClient::blame(const QString &workingDirectory, const QString &fileName, if (Git::Constants::debug) qDebug() << "blame" << workingDirectory << fileName << lineNumber; QStringList arguments(QLatin1String("blame")); + arguments << QLatin1String("--root"); + if (m_plugin->settings().spaceIgnorantBlame) + arguments << QLatin1String("-w"); arguments << QLatin1String("--") << fileName; const QString kind = QLatin1String(Git::Constants::GIT_BLAME_EDITOR_KIND); diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index cffe8b351a3..0e302d098a5 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -43,6 +43,7 @@ static const char *logCountKeyC = "LogCount"; static const char *timeoutKeyC = "TimeOut"; static const char *promptToSubmitKeyC = "PromptForSubmit"; static const char *omitAnnotationDateKeyC = "OmitAnnotationDate"; +static const char *spaceIgnorantBlameKeyC = "SpaceIgnorantBlame"; enum { defaultLogCount = 10 , defaultTimeOut = 30}; @@ -54,7 +55,8 @@ GitSettings::GitSettings() : logCount(defaultLogCount), timeout(defaultTimeOut), promptToSubmit(true), - omitAnnotationDate(false) + omitAnnotationDate(false), + spaceIgnorantBlame(true) { } @@ -67,6 +69,7 @@ void GitSettings::fromSettings(QSettings *settings) timeout = settings->value(QLatin1String(timeoutKeyC), defaultTimeOut).toInt(); promptToSubmit = settings->value(QLatin1String(promptToSubmitKeyC), true).toBool(); omitAnnotationDate = settings->value(QLatin1String(omitAnnotationDateKeyC), false).toBool(); + spaceIgnorantBlame = settings->value(QLatin1String(spaceIgnorantBlameKeyC), true).toBool(); settings->endGroup(); } @@ -79,6 +82,7 @@ void GitSettings::toSettings(QSettings *settings) const settings->setValue(QLatin1String(timeoutKeyC), timeout); settings->setValue(QLatin1String(promptToSubmitKeyC), promptToSubmit); settings->setValue(QLatin1String(omitAnnotationDateKeyC), omitAnnotationDate); + settings->setValue(QLatin1String(spaceIgnorantBlameKeyC), spaceIgnorantBlame); settings->endGroup(); } @@ -86,7 +90,7 @@ bool GitSettings::equals(const GitSettings &s) const { return adoptPath == s.adoptPath && path == s.path && logCount == s.logCount && timeout == s.timeout && promptToSubmit == s.promptToSubmit - && omitAnnotationDate == s.omitAnnotationDate; + && omitAnnotationDate == s.omitAnnotationDate && spaceIgnorantBlame == s.spaceIgnorantBlame; } QString GitSettings::gitBinaryPath(bool *ok, QString *errorMessage) const diff --git a/src/plugins/git/gitsettings.h b/src/plugins/git/gitsettings.h index a7bc47e6445..e1ca964b8a4 100644 --- a/src/plugins/git/gitsettings.h +++ b/src/plugins/git/gitsettings.h @@ -57,6 +57,7 @@ struct GitSettings int timeout; bool promptToSubmit; bool omitAnnotationDate; + bool spaceIgnorantBlame; }; inline bool operator==(const GitSettings &p1, const GitSettings &p2) diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp index 27abea353cf..5cddbeb22ac 100644 --- a/src/plugins/git/settingspage.cpp +++ b/src/plugins/git/settingspage.cpp @@ -58,6 +58,7 @@ GitSettings SettingsPageWidget::settings() const rc.timeout = m_ui.timeoutSpinBox->value(); rc.promptToSubmit = m_ui.promptToSubmitCheckBox->isChecked(); rc.omitAnnotationDate = m_ui.omitAnnotationDataCheckBox->isChecked(); + rc.spaceIgnorantBlame = m_ui.spaceIgnorantBlameCheckBox->isChecked(); return rc; } @@ -69,6 +70,7 @@ void SettingsPageWidget::setSettings(const GitSettings &s) m_ui.timeoutSpinBox->setValue(s.timeout); m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit); m_ui.omitAnnotationDataCheckBox->setChecked(s.omitAnnotationDate); + m_ui.spaceIgnorantBlameCheckBox->setChecked(s.spaceIgnorantBlame); } void SettingsPageWidget::setSystemPath() @@ -83,7 +85,8 @@ QString SettingsPageWidget::searchKeywords() const << ' ' << m_ui.timeoutLabel->text() << ' ' << m_ui.promptToSubmitCheckBox->text() << ' ' << m_ui.omitAnnotationDataCheckBox->text() - << ' ' << m_ui.environmentGroupBox->title(); + << ' ' << m_ui.environmentGroupBox->title() + << ' ' << m_ui.spaceIgnorantBlameCheckBox->text(); rc.remove(QLatin1Char('&')); return rc; } diff --git a/src/plugins/git/settingspage.ui b/src/plugins/git/settingspage.ui index 4432b6a4458..827beefa2a5 100644 --- a/src/plugins/git/settingspage.ui +++ b/src/plugins/git/settingspage.ui @@ -71,6 +71,9 @@ <string>Miscellaneous</string> </property> <layout class="QFormLayout" name="formLayout"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::ExpandingFieldsGrow</enum> + </property> <item row="0" column="0"> <widget class="QLabel" name="logCountLabel"> <property name="text"> @@ -125,6 +128,13 @@ </property> </widget> </item> + <item row="4" column="0" colspan="2"> + <widget class="QCheckBox" name="spaceIgnorantBlameCheckBox"> + <property name="text"> + <string>Ignore whitespace changes in annotation</string> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp index 42da8395b31..5976c9bdd98 100644 --- a/src/plugins/subversion/settingspage.cpp +++ b/src/plugins/subversion/settingspage.cpp @@ -62,6 +62,7 @@ SubversionSettings SettingsPageWidget::settings() const if (rc.user.isEmpty()) rc.useAuthentication = false; rc.promptToSubmit = m_ui.promptToSubmitCheckBox->isChecked(); + rc.spaceIgnorantAnnotation = m_ui.spaceIgnorantAnnotationCheckBox->isChecked(); return rc; } @@ -73,6 +74,7 @@ void SettingsPageWidget::setSettings(const SubversionSettings &s) m_ui.userGroupBox->setChecked(s.useAuthentication); m_ui.timeOutSpinBox->setValue(s.timeOutS); m_ui.promptToSubmitCheckBox->setChecked(s.promptToSubmit); + m_ui.spaceIgnorantAnnotationCheckBox->setChecked(s.spaceIgnorantAnnotation); } QString SettingsPageWidget::searchKeywords() const @@ -81,7 +83,8 @@ QString SettingsPageWidget::searchKeywords() const QTextStream(&rc) << m_ui.commandLabel->text() << ' ' << m_ui.usernameLabel->text() << ' ' << m_ui.passwordLabel->text() - << ' ' << m_ui.userGroupBox->title(); + << ' ' << m_ui.userGroupBox->title() + << ' ' << m_ui.spaceIgnorantAnnotationCheckBox->text(); rc.remove(QLatin1Char('&')); return rc; } diff --git a/src/plugins/subversion/settingspage.ui b/src/plugins/subversion/settingspage.ui index efbe0cce866..d74fa3c8396 100644 --- a/src/plugins/subversion/settingspage.ui +++ b/src/plugins/subversion/settingspage.ui @@ -99,6 +99,13 @@ </property> </widget> </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="spaceIgnorantAnnotationCheckBox"> + <property name="text"> + <string>Ignore whitespace changes in annotation</string> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index e648f3163b1..57ccc8f6078 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -717,6 +717,8 @@ void SubversionPlugin::annotate(const QString &workingDir, const QString &file) QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(file); QStringList args(QLatin1String("annotate")); + if (m_settings.spaceIgnorantAnnotation) + args << QLatin1String("-x") << QLatin1String("-uw"); args.push_back(QLatin1String("-v")); args.append(QDir::toNativeSeparators(file)); diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index 6ebc07c1e32..dd6bdc122de 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -42,6 +42,7 @@ static const char *userNameOptionC = "--username"; static const char *passwordOptionC = "--password"; static const char *promptToSubmitKeyC = "PromptForSubmit"; static const char *timeOutKeyC = "TimeOut"; +static const char *spaceIgnorantAnnotationKeyC = "SpaceIgnorantAnnotation"; enum { defaultTimeOutS = 30 }; @@ -61,7 +62,8 @@ SubversionSettings::SubversionSettings() : svnCommand(defaultCommand()), useAuthentication(false), timeOutS(defaultTimeOutS), - promptToSubmit(true) + promptToSubmit(true), + spaceIgnorantAnnotation(true) { } @@ -74,6 +76,7 @@ void SubversionSettings::fromSettings(QSettings *settings) password = settings->value(QLatin1String(passwordKeyC), QString()).toString(); timeOutS = settings->value(QLatin1String(timeOutKeyC), defaultTimeOutS).toInt(); promptToSubmit = settings->value(QLatin1String(promptToSubmitKeyC), true).toBool(); + spaceIgnorantAnnotation = settings->value(QLatin1String(spaceIgnorantAnnotationKeyC), true).toBool(); settings->endGroup(); } @@ -86,6 +89,7 @@ void SubversionSettings::toSettings(QSettings *settings) const settings->setValue(QLatin1String(passwordKeyC), password); settings->setValue(QLatin1String(promptToSubmitKeyC), promptToSubmit); settings->setValue(QLatin1String(timeOutKeyC), timeOutS); + settings->setValue(QLatin1String(spaceIgnorantAnnotationKeyC), spaceIgnorantAnnotation); settings->endGroup(); } @@ -96,7 +100,8 @@ bool SubversionSettings::equals(const SubversionSettings &s) const && user == s.user && password == s.password && timeOutS == s.timeOutS - && promptToSubmit == s.promptToSubmit; + && promptToSubmit == s.promptToSubmit + && spaceIgnorantAnnotation == s.spaceIgnorantAnnotation; } QStringList SubversionSettings::addOptions(const QStringList &args) const diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h index cec86f83cfb..4b485ce8720 100644 --- a/src/plugins/subversion/subversionsettings.h +++ b/src/plugins/subversion/subversionsettings.h @@ -64,6 +64,7 @@ struct SubversionSettings QString password; int timeOutS; bool promptToSubmit; + bool spaceIgnorantAnnotation; }; inline bool operator==(const SubversionSettings &p1, const SubversionSettings &p2) -- GitLab