From 06da25f6100236b2ce1cde58d044f3b1cb21fe4d Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Tue, 30 Apr 2013 21:29:25 +0300
Subject: [PATCH] Git: Add commit type to CommitData

Change-Id: I900f3dd89eeeac61e29604ac459d36ecc6c0aa8f
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/git/commitdata.cpp      |  4 ++++
 src/plugins/git/commitdata.h        |  4 ++++
 src/plugins/git/gitclient.cpp       |  7 +++----
 src/plugins/git/gitclient.h         |  5 ++---
 src/plugins/git/gitplugin.cpp       | 11 +++++------
 src/plugins/git/gitplugin.h         |  2 +-
 src/plugins/git/gitsubmiteditor.cpp | 12 ++++--------
 src/plugins/git/gitsubmiteditor.h   |  1 -
 8 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp
index 77b296a07f9..c7e9097d512 100644
--- a/src/plugins/git/commitdata.cpp
+++ b/src/plugins/git/commitdata.cpp
@@ -76,6 +76,10 @@ QDebug operator<<(QDebug d, const GitSubmitEditorPanelData &data)
     return d;
 }
 
+CommitData::CommitData(CommitType type) : commitType(type)
+{
+}
+
 void CommitData::clear()
 {
     panelInfo.clear();
diff --git a/src/plugins/git/commitdata.h b/src/plugins/git/commitdata.h
index 746d5d259ad..6688843dd5d 100644
--- a/src/plugins/git/commitdata.h
+++ b/src/plugins/git/commitdata.h
@@ -30,6 +30,8 @@
 #ifndef COMMITDATA_H
 #define COMMITDATA_H
 
+#include "gitsettings.h" // CommitType
+
 #include <QStringList>
 #include <QPair>
 
@@ -85,6 +87,7 @@ Q_DECLARE_FLAGS(FileStates, FileState)
 class CommitData
 {
 public:
+    CommitData(CommitType type = SimpleCommit);
     // A pair of state string/file name ('modified', 'file.cpp').
     typedef QPair<FileStates, QString> StateFilePair;
 
@@ -99,6 +102,7 @@ public:
 
     static QString stateDisplayName(const FileStates &state);
 
+    CommitType commitType;
     QString amendSHA1;
     QString commitEncoding;
     GitSubmitEditorPanelInfo panelInfo;
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 9ab41a2fd12..c1d9161551c 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2018,7 +2018,6 @@ QString GitClient::gitBinaryPath(bool *ok, QString *errorMessage) const
 }
 
 bool GitClient::getCommitData(const QString &workingDirectory,
-                              CommitType commitType,
                               QString *commitTemplate,
                               CommitData *commitData,
                               QString *errorMessage)
@@ -2047,7 +2046,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
     case  StatusChanged:
         break;
     case StatusUnchanged:
-        if (commitType == AmendCommit)
+        if (commitData->commitType == AmendCommit) // amend might be run just for the commit message
             break;
         *errorMessage = msgNoChangedFiles();
         return false;
@@ -2081,7 +2080,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
         }
         commitData->files = filteredFiles;
 
-        if (commitData->files.isEmpty() && commitType != AmendCommit) {
+        if (commitData->files.isEmpty() && commitData->commitType != AmendCommit) {
             *errorMessage = msgNoChangedFiles();
             return false;
         }
@@ -2090,7 +2089,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
     commitData->commitEncoding = readConfigValue(workingDirectory, QLatin1String("i18n.commitEncoding"));
 
     // Get the commit template or the last commit message
-    switch (commitType) {
+    switch (commitData->commitType) {
     case AmendCommit: {
         // Amend: get last commit data as "SHA1<tab>author<tab>email<tab>message".
         QStringList args(QLatin1String("log"));
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 6564ee6437d..377b4240fb8 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -261,9 +261,8 @@ public:
 
     QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
 
-    bool getCommitData(const QString &workingDirectory, CommitType commitType,
-                       QString *commitTemplate, CommitData *commitData,
-                       QString *errorMessage);
+    bool getCommitData(const QString &workingDirectory, QString *commitTemplate,
+                       CommitData *commitData, QString *errorMessage);
 
     bool addAndCommit(const QString &workingDirectory,
                       const GitSubmitEditorPanelData &data,
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index c62e57dbaa5..bad45c3b37a 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -896,8 +896,8 @@ void GitPlugin::startCommit(CommitType commitType)
     QTC_ASSERT(state.hasTopLevel(), return);
 
     QString errorMessage, commitTemplate;
-    CommitData data;
-    if (!m_gitClient->getCommitData(state.topLevel(), commitType, &commitTemplate, &data, &errorMessage)) {
+    CommitData data(commitType);
+    if (!m_gitClient->getCommitData(state.topLevel(), &commitTemplate, &data, &errorMessage)) {
         VcsBase::VcsBaseOutputWindow::instance()->append(errorMessage);
         return;
     }
@@ -917,7 +917,7 @@ void GitPlugin::startCommit(CommitType commitType)
         return;
     }
     m_commitMessageFileName = saver.fileName();
-    openSubmitEditor(m_commitMessageFileName, data, commitType);
+    openSubmitEditor(m_commitMessageFileName, data);
 }
 
 void GitPlugin::updateVersionWarning()
@@ -940,7 +940,7 @@ void GitPlugin::updateVersionWarning()
                         Core::InfoBarEntry::GlobalSuppressionEnabled));
 }
 
-Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const CommitData &cd, CommitType commitType)
+Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const CommitData &cd)
 {
     Core::IEditor *editor = Core::EditorManager::openEditor(fileName, Constants::GITSUBMITEDITOR_ID,
                                                 Core::EditorManager::ModeSwitch);
@@ -952,9 +952,8 @@ Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const Commit
     submitEditor->registerActions(m_undoAction, m_redoAction, m_submitCurrentAction, m_diffSelectedFilesAction);
     submitEditor->setCommitData(cd);
     submitEditor->setCheckScriptWorkingDirectory(m_submitRepository);
-    const QString title = (commitType == AmendCommit) ? tr("Amend %1").arg(cd.amendSHA1) : tr("Git Commit");
+    const QString title = (cd.commitType == AmendCommit) ? tr("Amend %1").arg(cd.amendSHA1) : tr("Git Commit");
     submitEditor->setDisplayName(title);
-    submitEditor->setCommitType(commitType);
     connect(submitEditor, SIGNAL(diff(QStringList,QStringList)), this, SLOT(submitEditorDiff(QStringList,QStringList)));
     connect(submitEditor, SIGNAL(merge(QStringList)), this, SLOT(submitEditorMerge(QStringList)));
     return editor;
diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h
index da5f9a8843d..34e9f289a86 100644
--- a/src/plugins/git/gitplugin.h
+++ b/src/plugins/git/gitplugin.h
@@ -192,7 +192,7 @@ private:
     void updateContinueAndAbortCommands();
     void updateRepositoryBrowserAction();
     bool isCommitEditorOpen() const;
-    Core::IEditor *openSubmitEditor(const QString &fileName, const CommitData &cd, CommitType commitType);
+    Core::IEditor *openSubmitEditor(const QString &fileName, const CommitData &cd);
     void cleanCommitMessageFile();
     void cleanRepository(const QString &directory);
     void applyPatch(const QString &workingDirectory, QString file = QString());
diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp
index bb7a93a887e..da3d1df4b84 100644
--- a/src/plugins/git/gitsubmiteditor.cpp
+++ b/src/plugins/git/gitsubmiteditor.cpp
@@ -110,6 +110,8 @@ void GitSubmitEditor::setCommitData(const CommitData &d)
 
     m_commitEncoding = d.commitEncoding;
     m_workingDirectory = d.panelInfo.repository;
+    m_commitType = d.commitType;
+    setEmptyFileListEnabled(m_commitType == AmendCommit); // Allow for just correcting the message
 
     m_model = new GitSubmitFileModel(this);
     if (!d.files.isEmpty()) {
@@ -133,12 +135,6 @@ void GitSubmitEditor::setCommitData(const CommitData &d)
     setFileModel(m_model, d.panelInfo.repository);
 }
 
-void GitSubmitEditor::setCommitType(CommitType commitType)
-{
-    m_commitType = commitType;
-    setEmptyFileListEnabled(commitType == AmendCommit); // Allow for just correcting the message
-}
-
 void GitSubmitEditor::slotDiffSelected(const QList<int> &rows)
 {
     // Sort it apart into unmerged/staged/unstaged files
@@ -167,8 +163,8 @@ void GitSubmitEditor::updateFileModel()
         return;
     GitClient *client = GitPlugin::instance()->gitClient();
     QString errorMessage, commitTemplate;
-    CommitData data;
-    if (client->getCommitData(m_workingDirectory, m_commitType, &commitTemplate, &data, &errorMessage)) {
+    CommitData data(m_commitType);
+    if (client->getCommitData(m_workingDirectory, &commitTemplate, &data, &errorMessage)) {
         setCommitData(data);
     } else {
         VcsBase::VcsBaseOutputWindow::instance()->append(errorMessage);
diff --git a/src/plugins/git/gitsubmiteditor.h b/src/plugins/git/gitsubmiteditor.h
index ca6e0cf7f16..e2d79e5fb73 100644
--- a/src/plugins/git/gitsubmiteditor.h
+++ b/src/plugins/git/gitsubmiteditor.h
@@ -54,7 +54,6 @@ public:
     explicit GitSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *parameters, QWidget *parent);
 
     void setCommitData(const CommitData &);
-    void setCommitType(CommitType commitType);
     GitSubmitEditorPanelData panelData() const;
     bool forceClose() const { return m_forceClose; }
 
-- 
GitLab