From 2a8c48cb15d50b8686e5cb4f29a96f4431a0ec37 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 11 Nov 2018 23:08:13 +0200 Subject: Git: Track external changes to HEAD Fixes: QTCREATORBUG-21089 Change-Id: Ifcbefd4f57bfdb5c726eced194076503c1dcb497 Reviewed-by: Tobias Hunger --- src/plugins/git/branchmodel.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/plugins/git/branchmodel.cpp') diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index 412f2ac284..cd2af5b02b 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -217,6 +218,7 @@ public: QString currentSha; QDateTime currentDateTime; QStringList obsoleteLocalBranches; + Utils::FileSystemWatcher fsWatcher; bool oldBranchesIncluded = false; }; @@ -233,6 +235,10 @@ BranchModel::BranchModel(GitClient *client, QObject *parent) : // Abuse the sha field for ref prefix d->rootNode->append(new BranchNode(tr("Local Branches"), "refs/heads")); d->rootNode->append(new BranchNode(tr("Remote Branches"), "refs/remotes")); + connect(&d->fsWatcher, &Utils::FileSystemWatcher::fileChanged, this, [this] { + QString errorMessage; + refresh(d->workingDirectory, &errorMessage); + }); } BranchModel::~BranchModel() @@ -388,7 +394,13 @@ bool BranchModel::refresh(const QString &workingDirectory, QString *errorMessage return false; } - d->workingDirectory = workingDirectory; + if (d->workingDirectory != workingDirectory) { + d->workingDirectory = workingDirectory; + d->fsWatcher.removeFiles(d->fsWatcher.files()); + const QString gitDir = d->client->findGitDirForRepository(workingDirectory); + if (!gitDir.isEmpty()) + d->fsWatcher.addFile(gitDir + "/HEAD", Utils::FileSystemWatcher::WatchModifiedDate); + } const QStringList lines = output.split('\n'); for (const QString &l : lines) parseOutputLine(l); -- cgit v1.2.1