From 960ac1adf4855ce73d36c265a6b08da0e478bd93 Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sun, 17 Sep 2023 14:54:51 +0200 Subject: [PATCH] Git: Branch View: Add upstream status for untracked branches Display the local commits (not contained in an upstream branch) in this case. Change-Id: If1b7e4c8c98c9867b1003b6ea0530494a14bc994 Reviewed-by: Reviewed-by: Orgad Shaneh --- src/plugins/git/branchmodel.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index 91d74f50b93..8b1248830d3 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -312,8 +312,11 @@ QVariant BranchModel::data(const QModelIndex &index, int role) const switch (index.column()) { case ColumnBranch: { res = node->name; + if (!node->isLocal() || !node->isLeaf()) + break; + + res += ' ' + arrowUp + QString::number(node->status.ahead); if (!node->tracking.isEmpty()) { - res += ' ' + arrowUp + QString::number(node->status.ahead); res += ' ' + arrowDown + QString::number(node->status.behind); res += " [" + node->tracking + ']'; } @@ -908,13 +911,17 @@ void BranchModel::removeNode(const QModelIndex &idx) void BranchModel::updateUpstreamStatus(BranchNode *node) { - if (node->tracking.isEmpty()) + if (!node->isLocal()) return; Process *process = new Process(node); process->setEnvironment(gitClient().processEnvironment()); - process->setCommand({gitClient().vcsBinary(), {"rev-list", "--no-color", "--left-right", - "--count", node->fullRef() + "..." + node->tracking}}); + QStringList parameters = {"rev-list", "--no-color", "--count"}; + if (node->tracking.isEmpty()) + parameters += {"HEAD", "--not", "--remotes"}; + else + parameters += {"--left-right", node->fullRef() + "..." + node->tracking}; + process->setCommand({gitClient().vcsBinary(), parameters}); process->setWorkingDirectory(d->workingDirectory); connect(process, &Process::done, this, [this, process, node] { process->deleteLater(); @@ -924,9 +931,13 @@ void BranchModel::updateUpstreamStatus(BranchNode *node) if (text.isEmpty()) return; const QStringList split = text.trimmed().split('\t'); - QTC_ASSERT(split.size() == 2, return); + if (node->tracking.isEmpty()) { + node->setUpstreamStatus(UpstreamStatus(split.at(0).toInt(), 0)); + } else { + QTC_ASSERT(split.size() == 2, return); - node->setUpstreamStatus(UpstreamStatus(split.at(0).toInt(), split.at(1).toInt())); + node->setUpstreamStatus(UpstreamStatus(split.at(0).toInt(), split.at(1).toInt())); + } const QModelIndex idx = nodeToIndex(node, ColumnBranch); emit dataChanged(idx, idx); });