From 354f62805232663d5b26c0abe14de6962614b5e6 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 9 Aug 2020 18:44:12 +0300 Subject: [PATCH] Git: Filter out commits according to active remote MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... in the Push to Gerrit dialog. Fixes: QTCREATORBUG-24436 Change-Id: I2f1ab49d9fbeb09ffb66de23d34a2facd53cb725 Reviewed-by: André Hartmann --- src/plugins/git/gerrit/gerritpushdialog.cpp | 9 +++++++++ src/plugins/git/logchangedialog.cpp | 8 ++++++-- src/plugins/git/logchangedialog.h | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/plugins/git/gerrit/gerritpushdialog.cpp b/src/plugins/git/gerrit/gerritpushdialog.cpp index ab5190d6435..8330288b6b7 100644 --- a/src/plugins/git/gerrit/gerritpushdialog.cpp +++ b/src/plugins/git/gerrit/gerritpushdialog.cpp @@ -66,6 +66,8 @@ protected: QString GerritPushDialog::determineRemoteBranch(const QString &localBranch) { const QString earliestCommit = m_ui->commitView->earliestCommit(); + if (earliestCommit.isEmpty()) + return {}; QString output; QString error; @@ -233,6 +235,13 @@ void GerritPushDialog::onRemoteChanged(bool force) { setRemoteBranches(); const QString version = m_ui->remoteComboBox->currentServer().version; + const QString remote = m_ui->remoteComboBox->currentRemoteName(); + + m_ui->commitView->setExcludedRemote(remote); + const QString branch = m_ui->localBranchComboBox->itemText(m_ui->localBranchComboBox->currentIndex()); + m_hasLocalCommits = m_ui->commitView->init(m_workingDir, branch, LogChangeWidget::Silent); + validate(); + const bool supportsWip = versionSupportsWip(version); if (!force && supportsWip == m_currentSupportsWip) return; diff --git a/src/plugins/git/logchangedialog.cpp b/src/plugins/git/logchangedialog.cpp index 20db9bb82c2..2896f4bd48b 100644 --- a/src/plugins/git/logchangedialog.cpp +++ b/src/plugins/git/logchangedialog.cpp @@ -183,8 +183,12 @@ bool LogChangeWidget::populateLog(const QString &repository, const QString &comm QStringList arguments; arguments << "--max-count=1000" << "--format=%h:%s %d"; arguments << (commit.isEmpty() ? "HEAD" : commit); - if (!(flags & IncludeRemotes)) - arguments << "--not" << "--remotes"; + if (!(flags & IncludeRemotes)) { + QString remotesFlag("--remotes"); + if (!m_excludedRemote.isEmpty()) + remotesFlag += '=' + m_excludedRemote; + arguments << "--not" << remotesFlag; + } arguments << "--"; QString output; if (!GitClient::instance()->synchronousLog( diff --git a/src/plugins/git/logchangedialog.h b/src/plugins/git/logchangedialog.h index 4625f56e0ca..ebc54371057 100644 --- a/src/plugins/git/logchangedialog.h +++ b/src/plugins/git/logchangedialog.h @@ -67,6 +67,7 @@ public: int commitIndex() const; QString earliestCommit() const; void setItemDelegate(QAbstractItemDelegate *delegate); + void setExcludedRemote(const QString &remote) { m_excludedRemote = remote; } signals: void commitActivated(const QString &commit); @@ -80,6 +81,7 @@ private: LogChangeModel *m_model; bool m_hasCustomDelegate; + QString m_excludedRemote; }; class LogChangeDialog : public QDialog