summaryrefslogtreecommitdiff
path: root/src/plugins/git/gitversioncontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/git/gitversioncontrol.cpp')
-rw-r--r--src/plugins/git/gitversioncontrol.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp
index 363df7c945..eaa8c77370 100644
--- a/src/plugins/git/gitversioncontrol.cpp
+++ b/src/plugins/git/gitversioncontrol.cpp
@@ -161,10 +161,10 @@ QString GitVersionControl::vcsCreateSnapshot(const QString &topLevel)
return stashMessage;
if (repositoryUnchanged) {
// For unchanged repository state: return identifier + top revision
- QString topRevision;
- QString branch;
- if (!m_client->synchronousTopRevision(topLevel, &topRevision, &branch))
+ QString topRevision = m_client->synchronousTopRevision(topLevel);
+ if (topRevision.isEmpty())
return QString();
+ QString branch = m_client->synchronousBranch(topLevel);
const QChar colon = QLatin1Char(':');
QString id = QLatin1String(stashRevisionIdC);
id += colon;
@@ -201,9 +201,13 @@ bool GitVersionControl::vcsRestoreSnapshot(const QString &topLevel, const QStrin
break;
const QString branch = tokens.at(1);
const QString revision = tokens.at(2);
- success = m_client->synchronousReset(topLevel)
- && m_client->synchronousCheckoutBranch(topLevel, branch)
- && m_client->synchronousCheckoutFiles(topLevel, QStringList(), revision);
+ success = m_client->synchronousReset(topLevel);
+ if (success && !branch.isEmpty()) {
+ success = m_client->synchronousCheckoutBranch(topLevel, branch) &&
+ m_client->synchronousCheckoutFiles(topLevel, QStringList(), revision);
+ } else {
+ success = m_client->synchronousCheckoutBranch(topLevel, revision);
+ }
} else {
// Restore stash if it can be resolved.
QString stashName;