summaryrefslogtreecommitdiff
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-12-02 23:28:58 +0200
committerOrgad Shaneh <orgads@gmail.com>2013-12-09 11:14:02 +0100
commit4a5af14b7f1260f2a4d2bb7c4bd3883fc5baf524 (patch)
tree6112b46183a30818c0cb6e0df0de8f2a971266a3 /src/plugins/git/gitclient.cpp
parent0c0c1cd58ff0af2371ee7e5ead9b4a412e27f90e (diff)
downloadqt-creator-4a5af14b7f1260f2a4d2bb7c4bd3883fc5baf524.tar.gz
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>
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r--src/plugins/git/gitclient.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index ed5124c93c..6842489a82 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -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);
}