summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2012-12-26 21:07:12 +0200
committerOrgad Shaneh <orgad.shaneh@audiocodes.com>2012-12-30 21:48:11 +0100
commita471389e02a5ee593e030a4a1580caf6aca3229b (patch)
treef02c498e334b6a3edf2c3c3e5bd0fdaf45767c30 /src
parentcecfffc7a3b858c75ccd3bb1c7a745ebdec1d509 (diff)
downloadqt-creator-a471389e02a5ee593e030a4a1580caf6aca3229b.tar.gz
Git: Ignore submodules for status except for commit
Submodules are not stashed and are not considered a conflict after revert Change-Id: I97a0792db615054622b9b67a7f6b58b5aee05273 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/git/gitclient.cpp15
-rw-r--r--src/plugins/git/gitclient.h9
-rw-r--r--src/plugins/git/stashdialog.cpp2
3 files changed, 18 insertions, 8 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 40f6b356b0..5573a533a4 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1268,7 +1268,7 @@ QString GitClient::synchronousStash(const QString &workingDirectory, const QStri
bool success = false;
// Check for changes and stash
QString errorMessage;
- switch (gitStatus(workingDirectory, false, 0, &errorMessage)) {
+ switch (gitStatus(workingDirectory, StatusMode(NoUntracked | NoSubmodules), 0, &errorMessage)) {
case StatusChanged: {
message = creatorStashMessage(messageKeyword);
do {
@@ -1575,7 +1575,8 @@ GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory)
GitClient::StashResult GitClient::ensureStash(const QString &workingDirectory, QString *errorMessage)
{
QString statusOutput;
- switch (gitStatus(workingDirectory, false, &statusOutput, errorMessage)) {
+ switch (gitStatus(workingDirectory, StatusMode(NoUntracked | NoSubmodules),
+ &statusOutput, errorMessage)) {
case StatusChanged:
break;
case StatusUnchanged:
@@ -1616,7 +1617,7 @@ static inline QString trimFileSpecification(QString fileSpec)
return fileSpec;
}
-GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory, bool untracked,
+GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory, StatusMode mode,
QString *output, QString *errorMessage)
{
// Run 'status'. Note that git returns exitcode 1 if there are no added files.
@@ -1624,8 +1625,10 @@ GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory, bo
QByteArray errorText;
QStringList statusArgs(QLatin1String("status"));
- if (!untracked)
+ if (mode & NoUntracked)
statusArgs << QLatin1String("--untracked-files=no");
+ if (mode & NoSubmodules)
+ statusArgs << QLatin1String("--ignore-submodules=all");
statusArgs << QLatin1String("-s") << QLatin1String("-b");
const bool statusRc = fullySynchronousGit(workingDirectory, statusArgs, &outputText, &errorText);
@@ -1789,7 +1792,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
// Run status. Note that it has exitcode 1 if there are no added files.
QString output;
- const StatusResult status = gitStatus(repoDirectory, true, &output, errorMessage);
+ const StatusResult status = gitStatus(repoDirectory, ShowAll, &output, errorMessage);
switch (status) {
case StatusChanged:
break;
@@ -2000,7 +2003,7 @@ GitClient::RevertResult GitClient::revertI(QStringList files,
// Check for changes
QString output;
- switch (gitStatus(repoDirectory, false, &output, errorMessage)) {
+ switch (gitStatus(repoDirectory, StatusMode(NoUntracked | NoSubmodules), &output, errorMessage)) {
case StatusChanged:
break;
case StatusUnchanged:
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 7795858246..afc6f4968b 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -70,6 +70,13 @@ class CommitData;
struct GitSubmitEditorPanelData;
class Stash;
+enum StatusMode
+{
+ ShowAll = 0,
+ NoUntracked = 1,
+ NoSubmodules = 2
+};
+
class GitClient : public QObject
{
Q_OBJECT
@@ -210,7 +217,7 @@ public:
enum StatusResult { StatusChanged, StatusUnchanged, StatusFailed };
StatusResult gitStatus(const QString &workingDirectory,
- bool untracked = false,
+ StatusMode mode,
QString *output = 0,
QString *errorMessage = 0);
diff --git a/src/plugins/git/stashdialog.cpp b/src/plugins/git/stashdialog.cpp
index d3a018ba43..69c582e870 100644
--- a/src/plugins/git/stashdialog.cpp
+++ b/src/plugins/git/stashdialog.cpp
@@ -288,7 +288,7 @@ bool StashDialog::promptForRestore(QString *stash,
{
const QString stashIn = *stash;
bool modifiedPromptShown = false;
- switch (gitClient()->gitStatus(m_repository, false, 0, errorMessage)) {
+ switch (gitClient()->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules), 0, errorMessage)) {
case GitClient::StatusFailed:
return false;
case GitClient::StatusChanged: {