Git: Enable choosing non-fast-forward merge

Change-Id: I5972489d06637616953bd0d93a3b65c4d9918377
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
This commit is contained in:
Orgad Shaneh
2013-12-02 23:28:58 +02:00
committed by Orgad Shaneh
parent 0c0c1cd58f
commit 4a5af14b7f
3 changed files with 34 additions and 5 deletions

View File

@@ -2106,6 +2106,17 @@ bool GitClient::isRemoteCommit(const QString &workingDirectory, const QString &c
return !outputText.isEmpty();
}
bool GitClient::isFastForwardMerge(const QString &workingDirectory, const QString &branch)
{
QStringList arguments;
QByteArray outputText;
arguments << QLatin1String("merge-base") << QLatin1String(HEAD) << branch;
fullySynchronousGit(workingDirectory, arguments, &outputText, 0,
VcsBasePlugin::SuppressCommandLogging);
return commandOutputFromLocal8Bit(outputText).trimmed()
== synchronousTopRevision(workingDirectory);
}
// Format an entry in a one-liner for selection list using git log.
QString GitClient::synchronousShortDescription(const QString &workingDirectory, const QString &revision,
const QString &format)
@@ -3485,12 +3496,15 @@ void GitClient::push(const QString &workingDirectory, const QStringList &pushArg
executeGit(workingDirectory, arguments, 0, true);
}
bool GitClient::synchronousMerge(const QString &workingDirectory, const QString &branch)
bool GitClient::synchronousMerge(const QString &workingDirectory, const QString &branch,
bool allowFastForward)
{
QString command = QLatin1String("merge");
QStringList arguments;
QStringList arguments(command);
arguments << command << branch;
if (!allowFastForward)
arguments << QLatin1String("--no-ff");
arguments << branch;
return executeAndHandleConflicts(workingDirectory, arguments, command);
}