diff options
author | Friedemann Kleint <[email protected]> | 2010-08-06 10:46:50 +0200 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2010-08-06 10:46:50 +0200 |
commit | 7e739985b25b16af504adb280685c961afbcbcc8 (patch) | |
tree | 4bd678eaaac49ed580d2ad091c218961a5d08081 /src/plugins/git/gitclient.cpp | |
parent | 077c9181863e0036ae16772530cd2624af9e7b78 (diff) | |
parent | 9bad0c01bec3547324bf9340497fb956467a9531 (diff) |
Merge remote branch 'origin/2.0'
Conflicts:
src/plugins/debugger/debuggeruiswitcher.cpp
src/plugins/git/gitclient.cpp
src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r-- | src/plugins/git/gitclient.cpp | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 2312e47a6ba..fb8393b5dd6 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -600,18 +600,22 @@ bool GitClient::synchronousInit(const QString &workingDirectory) bool GitClient::synchronousCheckoutFiles(const QString &workingDirectory, QStringList files /* = QStringList() */, QString revision /* = QString() */, - QString *errorMessage /* = 0 */) + QString *errorMessage /* = 0 */, + bool revertStaging /* = true */) { if (Git::Constants::debug) qDebug() << Q_FUNC_INFO << workingDirectory << files; - if (revision.isEmpty()) + if (revertStaging && revision.isEmpty()) revision = QLatin1String("HEAD"); if (files.isEmpty()) files = QStringList(QString(QLatin1Char('.'))); QByteArray outputText; QByteArray errorText; QStringList arguments; - arguments << QLatin1String("checkout") << revision << QLatin1String("--") << files; + arguments << QLatin1String("checkout"); + if (revertStaging) + arguments << revision; + arguments << QLatin1String("--") << files; const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText); if (!rc) { const QString fileArg = files.join(QLatin1String(", ")); @@ -1479,7 +1483,10 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory, * reverting a directory pending a sophisticated selection dialog in the * VCSBase plugin. */ -GitClient::RevertResult GitClient::revertI(QStringList files, bool *ptrToIsDirectory, QString *errorMessage) +GitClient::RevertResult GitClient::revertI(QStringList files, + bool *ptrToIsDirectory, + QString *errorMessage, + bool revertStaging) { if (Git::Constants::debug) qDebug() << Q_FUNC_INFO << files; @@ -1541,7 +1548,7 @@ GitClient::RevertResult GitClient::revertI(QStringList files, bool *ptrToIsDirec if (Git::Constants::debug) qDebug() << Q_FUNC_INFO << data.stagedFiles << data.unstagedFiles << allStagedFiles << allUnstagedFiles << stagedFiles << unstagedFiles; - if (stagedFiles.empty() && unstagedFiles.empty()) + if ((!revertStaging || stagedFiles.empty()) && unstagedFiles.empty()) return RevertUnchanged; // Ask to revert (to do: Handle lists with a selection dialog) @@ -1555,19 +1562,22 @@ GitClient::RevertResult GitClient::revertI(QStringList files, bool *ptrToIsDirec return RevertCanceled; // Unstage the staged files - if (!stagedFiles.empty() && !synchronousReset(repoDirectory, stagedFiles, errorMessage)) + if (revertStaging && !stagedFiles.empty() && !synchronousReset(repoDirectory, stagedFiles, errorMessage)) return RevertFailed; + QStringList filesToRevert = unstagedFiles; + if (revertStaging) + filesToRevert += stagedFiles; // Finally revert! - if (!synchronousCheckoutFiles(repoDirectory, stagedFiles + unstagedFiles, QString(), errorMessage)) + if (!synchronousCheckoutFiles(repoDirectory, filesToRevert, QString(), errorMessage, revertStaging)) return RevertFailed; return RevertOk; } -void GitClient::revert(const QStringList &files) +void GitClient::revert(const QStringList &files, bool revertStaging) { bool isDirectory; QString errorMessage; - switch (revertI(files, &isDirectory, &errorMessage)) { + switch (revertI(files, &isDirectory, &errorMessage, revertStaging)) { case RevertOk: m_plugin->gitVersionControl()->emitFilesChanged(files); break; |