Git: Support move/copy detection for blame

Fixes: QTCREATORBUG-20462
Change-Id: Ib2ea14de6a60691a1ed27cd07aac282557d69015
Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
Orgad Shaneh
2018-09-18 14:50:12 +03:00
committed by Orgad Shaneh
parent 202d40f256
commit c415a03cea
4 changed files with 23 additions and 7 deletions

View File

@@ -588,6 +588,15 @@ public:
tr("Ignore whitespace only changes.")),
settings.boolPointer(GitSettings::ignoreSpaceChangesInBlameKey));
const QList<ComboBoxItem> 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());
}
};

View File

@@ -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);

View File

@@ -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;

View File

@@ -255,16 +255,20 @@ QStringList VcsBaseEditorConfig::argumentsForOption(const OptionMapping &mapping
if (action && action->isChecked())
return mapping.options;
QStringList args;
const QComboBox *cb = qobject_cast<const QComboBox *>(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()