diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index b10a6ffe81b..8263ea29ac9 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -588,6 +588,15 @@ public: tr("Ignore whitespace only changes.")), settings.boolPointer(GitSettings::ignoreSpaceChangesInBlameKey)); + const QList logChoices = { + ComboBoxItem(tr("No Move Detection"), ""), + ComboBoxItem(tr("Detect Moves Within File"), "-M"), + ComboBoxItem(tr("Detect Moves Between Files"), "-M -C"), + ComboBoxItem(tr("Detect Moves and Copies Between Files"), "-M -C -C") + }; + mapSetting(addComboBox({}, logChoices), + settings.intPointer(GitSettings::blameMoveDetection)); + addButton(tr("Reload"), Utils::Icons::RELOAD.icon()); } }; diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index eee0c534519..cc84fade0e8 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -37,6 +37,7 @@ const QLatin1String GitSettings::showTagsKey("ShowTags"); const QLatin1String GitSettings::omitAnnotationDateKey("OmitAnnotationDate"); const QLatin1String GitSettings::ignoreSpaceChangesInDiffKey("SpaceIgnorantDiff"); const QLatin1String GitSettings::ignoreSpaceChangesInBlameKey("SpaceIgnorantBlame"); +const QLatin1String GitSettings::blameMoveDetection("BlameDetectMove"); const QLatin1String GitSettings::diffPatienceKey("DiffPatience"); const QLatin1String GitSettings::winSetHomeEnvironmentKey("WinSetHomeEnvironment"); const QLatin1String GitSettings::gitkOptionsKey("GitKOptions"); @@ -56,6 +57,7 @@ GitSettings::GitSettings() declareKey(showTagsKey, false); declareKey(omitAnnotationDateKey, false); declareKey(ignoreSpaceChangesInDiffKey, true); + declareKey(blameMoveDetection, 0); declareKey(ignoreSpaceChangesInBlameKey, true); declareKey(diffPatienceKey, true); declareKey(winSetHomeEnvironmentKey, true); diff --git a/src/plugins/git/gitsettings.h b/src/plugins/git/gitsettings.h index aafd6ddd083..4a33bdc8761 100644 --- a/src/plugins/git/gitsettings.h +++ b/src/plugins/git/gitsettings.h @@ -48,6 +48,7 @@ public: static const QLatin1String omitAnnotationDateKey; static const QLatin1String ignoreSpaceChangesInDiffKey; static const QLatin1String ignoreSpaceChangesInBlameKey; + static const QLatin1String blameMoveDetection; static const QLatin1String diffPatienceKey; static const QLatin1String winSetHomeEnvironmentKey; static const QLatin1String gitkOptionsKey; diff --git a/src/plugins/vcsbase/vcsbaseeditorconfig.cpp b/src/plugins/vcsbase/vcsbaseeditorconfig.cpp index 31388d7a592..29429c00caf 100644 --- a/src/plugins/vcsbase/vcsbaseeditorconfig.cpp +++ b/src/plugins/vcsbase/vcsbaseeditorconfig.cpp @@ -255,16 +255,20 @@ QStringList VcsBaseEditorConfig::argumentsForOption(const OptionMapping &mapping if (action && action->isChecked()) return mapping.options; + QStringList args; const QComboBox *cb = qobject_cast(mapping.object); - if (cb) { - const QString value = cb->itemData(cb->currentIndex()).toString(); - QStringList args; - foreach (const QString &option, mapping.options) - args << option.arg(value); + if (!cb) return args; - } - return QStringList(); + const QString value = cb->itemData(cb->currentIndex()).toString(); + if (value.isEmpty()) + return args; + + if (mapping.options.isEmpty()) + args += value.split(' '); + else + args += mapping.options.first().arg(value); + return args; } void VcsBaseEditorConfig::updateMappedSettings()