From 9b7274a0110712822ccbf93e1856b9a3d6e762c0 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 24 Mar 2009 15:46:58 +0100
Subject: [PATCH] Remove comment lines from the git commit message (as git
 commit -F does not do that)

Reviewed-by:  dt <qtc-committer@nokia.com>
 enter the commit message for your changes. Lines starting
---
 src/plugins/git/gitsubmiteditor.cpp | 20 ++++++++++++++++++++
 src/plugins/git/gitsubmiteditor.h   |  2 ++
 2 files changed, 22 insertions(+)

diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp
index 1f082e5188d..4de97513fd3 100644
--- a/src/plugins/git/gitsubmiteditor.cpp
+++ b/src/plugins/git/gitsubmiteditor.cpp
@@ -35,6 +35,7 @@
 #include <vcsbase/submitfilemodel.h>
 
 #include <QtCore/QDebug>
+#include <QtCore/QStringList>
 
 namespace Git {
 namespace Internal {
@@ -121,6 +122,25 @@ void GitSubmitEditor::slotDiffSelected(const QStringList &files)
         emit diff(unstagedFiles, stagedFiles);
 }
 
+QString GitSubmitEditor::fileContents() const
+{
+    // We need to manually purge out comment lines starting with
+    // hash '#' since git does not do that when using -F.
+    const QChar newLine = QLatin1Char('\n');
+    const QChar hash = QLatin1Char('#');
+    QString message = VCSBase::VCSBaseSubmitEditor::fileContents();
+    for (int pos = 0; pos < message.size(); ) {
+        const int newLinePos = message.indexOf(newLine, pos);
+        const int startOfNextLine = newLinePos == -1 ? message.size() : newLinePos + 1;
+        if (message.at(pos) == hash) {
+            message.remove(pos, startOfNextLine - pos);
+        } else {
+            pos = startOfNextLine;
+        }
+    }
+    return message;
+}
+
 GitSubmitEditorPanelData GitSubmitEditor::panelData() const
 {
     return const_cast<GitSubmitEditor*>(this)->submitEditorWidget()->panelData();
diff --git a/src/plugins/git/gitsubmiteditor.h b/src/plugins/git/gitsubmiteditor.h
index a2c97e05e2a..88f4dba8e13 100644
--- a/src/plugins/git/gitsubmiteditor.h
+++ b/src/plugins/git/gitsubmiteditor.h
@@ -54,6 +54,8 @@ public:
     void setCommitData(const CommitData &);
     GitSubmitEditorPanelData panelData() const;
 
+    virtual QString fileContents() const;
+
 signals:
     void diff(const QStringList &unstagedFiles, const QStringList &stagedFiles);
 
-- 
GitLab