diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2012-12-26 21:07:12 +0200 |
---|---|---|
committer | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2012-12-30 21:48:11 +0100 |
commit | a471389e02a5ee593e030a4a1580caf6aca3229b (patch) | |
tree | f02c498e334b6a3edf2c3c3e5bd0fdaf45767c30 /src | |
parent | cecfffc7a3b858c75ccd3bb1c7a745ebdec1d509 (diff) | |
download | qt-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.cpp | 15 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 9 | ||||
-rw-r--r-- | src/plugins/git/stashdialog.cpp | 2 |
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: { |