From 1f0cbbc807e76078771a58c7dc20705dd48b8c72 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Wed, 2 Oct 2013 15:14:26 +0300
Subject: [PATCH] Git: Disallow Commit and Push if rebase is in progress

Change-Id: I35a6cf850bccf076d22a73b98b0422663c61b1d3
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
---
 src/plugins/git/gitclient.cpp |  9 +++++++++
 src/plugins/git/gitplugin.cpp | 23 ++++++++++-------------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 0c3c245eb1f..aa4e2b48db3 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -3046,6 +3046,15 @@ bool GitClient::getCommitData(const QString &workingDirectory,
     }
 
     commitData.enablePush = !synchronousRemotesList(repoDirectory).isEmpty();
+    if (commitData.enablePush) {
+        switch (checkCommandInProgress(repoDirectory)) {
+        case GitClient::Rebase:
+        case GitClient::RebaseMerge:
+            commitData.enablePush = false;
+            break;
+        }
+    }
+
     return true;
 }
 
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 7d0f918c744..ab195cde664 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -1111,25 +1111,22 @@ bool GitPlugin::submitEditorAboutToClose()
                                                 commitType, amendSHA1,
                                                 m_commitMessageFileName, model);
     }
-    if (closeEditor) {
-        cleanCommitMessageFile();
-        if (commitType == FixupCommit) {
-            if (!m_gitClient->beginStashScope(m_submitRepository, QLatin1String("Rebase-fixup"), NoPrompt))
-                return false;
-            m_gitClient->interactiveRebase(m_submitRepository, amendSHA1, true);
-        } else {
-            m_gitClient->continueCommandIfNeeded(m_submitRepository);
-        }
-    }
-
-    if (m_gitClient->checkCommandInProgress(m_submitRepository) == GitClient::NoCommand) {
+    if (!closeEditor)
+        return false;
+    cleanCommitMessageFile();
+    if (commitType == FixupCommit) {
+        if (!m_gitClient->beginStashScope(m_submitRepository, QLatin1String("Rebase-fixup"), NoPrompt))
+            return false;
+        m_gitClient->interactiveRebase(m_submitRepository, amendSHA1, true);
+    } else {
+        m_gitClient->continueCommandIfNeeded(m_submitRepository);
         if (editor->panelData().pushAction == NormalPush)
             m_gitClient->push(m_submitRepository);
         else if (editor->panelData().pushAction == PushToGerrit)
             connect(editor, SIGNAL(destroyed()), this, SLOT(delayedPushToGerrit()));
     }
 
-    return closeEditor;
+    return true;
 }
 
 void GitPlugin::fetch()
-- 
GitLab