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