From 0901cada42f987eb142e2f464533ba0d55fbc917 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 19 Nov 2018 16:57:14 +0300 Subject: [PATCH] git: do not pass `--force-with-lease` to old git versions --- .../git4idea/src/git4idea/commands/GitImpl.java | 16 +++++++++------- .../src/git4idea/config/GitVersionSpecialty.java | 7 +++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/git4idea/src/git4idea/commands/GitImpl.java b/plugins/git4idea/src/git4idea/commands/GitImpl.java index 71998462d06a..ae80d41719bf 100644 --- a/plugins/git4idea/src/git4idea/commands/GitImpl.java +++ b/plugins/git4idea/src/git4idea/commands/GitImpl.java @@ -451,13 +451,15 @@ public class GitImpl extends GitImplBase { if (force) { h.addParameters("--force"); } - for (GitPushParams.ForceWithLease lease : forceWithLease) { - String parameter = lease.getParameter(); - if (parameter != null) { - h.addParameters("--force-with-lease=" + parameter); - } - else { - h.addParameters("--force-with-lease"); + if (GitVersionSpecialty.SUPPORTS_FORCE_PUSH_WITH_LEASE.existsIn(repository)) { + for (GitPushParams.ForceWithLease lease : forceWithLease) { + String parameter = lease.getParameter(); + if (parameter != null) { + h.addParameters("--force-with-lease=" + parameter); + } + else { + h.addParameters("--force-with-lease"); + } } } if (tagMode != null) { diff --git a/plugins/git4idea/src/git4idea/config/GitVersionSpecialty.java b/plugins/git4idea/src/git4idea/config/GitVersionSpecialty.java index 90e2532c6d61..66f0f34cab1b 100644 --- a/plugins/git4idea/src/git4idea/config/GitVersionSpecialty.java +++ b/plugins/git4idea/src/git4idea/config/GitVersionSpecialty.java @@ -212,6 +212,13 @@ public enum GitVersionSpecialty { } }, + SUPPORTS_FORCE_PUSH_WITH_LEASE { + @Override + public boolean existsIn(@NotNull GitVersion version) { + return version.isLaterOrEqual(new GitVersion(1, 8, 5, 0)); + } + }, + INCOMING_OUTGOING_BRANCH_INFO { @Override public boolean existsIn(@NotNull GitVersion version) {