Gerrit: List remote branches also for non-fetched remotes

Task-number: QTCREATORBUG-13718
Change-Id: I0259d06f4f06b68af459d747176dc46b14a55008
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2015-02-12 15:22:24 +02:00
committed by Orgad Shaneh
parent bd5afaf4c6
commit 7471187404
3 changed files with 14 additions and 7 deletions

View File

@@ -118,8 +118,7 @@ void GerritPushDialog::initRemoteBranches()
BranchDate bd(ref.mid(refBranchIndex + 1), QDateTime::fromTime_t(timeT).date()); BranchDate bd(ref.mid(refBranchIndex + 1), QDateTime::fromTime_t(timeT).date());
m_remoteBranches.insertMulti(ref.left(refBranchIndex), bd); m_remoteBranches.insertMulti(ref.left(refBranchIndex), bd);
} }
QStringList remotes = m_remoteBranches.keys(); QStringList remotes = m_client->synchronousRemotesList(m_workingDir).keys();
remotes.removeDuplicates();
m_ui->remoteComboBox->addItems(remotes); m_ui->remoteComboBox->addItems(remotes);
m_ui->remoteComboBox->setEnabled(remotes.count() > 1); m_ui->remoteComboBox->setEnabled(remotes.count() > 1);
} }
@@ -224,6 +223,11 @@ void GerritPushDialog::setRemoteBranches(bool includeOld)
m_ui->targetBranchComboBox->clear(); m_ui->targetBranchComboBox->clear();
const QString remoteName = selectedRemoteName(); const QString remoteName = selectedRemoteName();
if (!m_remoteBranches.contains(remoteName)) {
foreach (const QString &branch, m_client->synchronousRepositoryBranches(remoteName, m_workingDir))
m_remoteBranches.insertMulti(remoteName, qMakePair(branch, QDate()));
}
int i = 0; int i = 0;
bool excluded = false; bool excluded = false;
foreach (const BranchDate &bd, m_remoteBranches.values(remoteName)) { foreach (const BranchDate &bd, m_remoteBranches.values(remoteName)) {

View File

@@ -1873,7 +1873,8 @@ bool GitClient::synchronousRemoteCmd(const QString &workingDirectory, QStringLis
msgCannotRun(remoteArgs, workingDirectory, errorText, errorMessage); msgCannotRun(remoteArgs, workingDirectory, errorText, errorMessage);
return false; return false;
} }
*output = commandOutputFromLocal8Bit(outputText); if (output)
*output = commandOutputFromLocal8Bit(outputText);
return true; return true;
} }
@@ -2420,14 +2421,15 @@ QString GitClient::extendedShowDescription(const QString &workingDirectory, cons
// Quietly retrieve branch list of remote repository URL // Quietly retrieve branch list of remote repository URL
// //
// The branch HEAD is pointing to is always returned first. // The branch HEAD is pointing to is always returned first.
QStringList GitClient::synchronousRepositoryBranches(const QString &repositoryURL) const QStringList GitClient::synchronousRepositoryBranches(const QString &repositoryURL,
const QString &workingDirectory) const
{ {
QStringList arguments(QLatin1String("ls-remote")); QStringList arguments(QLatin1String("ls-remote"));
arguments << repositoryURL << QLatin1String(HEAD) << QLatin1String("refs/heads/*"); arguments << repositoryURL << QLatin1String(HEAD) << QLatin1String("refs/heads/*");
const unsigned flags = VcsBasePlugin::SshPasswordPrompt const unsigned flags = VcsBasePlugin::SshPasswordPrompt
| VcsBasePlugin::SuppressStdErrInLogWindow | VcsBasePlugin::SuppressStdErrInLogWindow
| VcsBasePlugin::SuppressFailMessageInLogWindow; | VcsBasePlugin::SuppressFailMessageInLogWindow;
const SynchronousProcessResponse resp = synchronousGit(QString(), arguments, flags); const SynchronousProcessResponse resp = synchronousGit(workingDirectory, arguments, flags);
QStringList branches; QStringList branches;
branches << tr("<Detached HEAD>"); branches << tr("<Detached HEAD>");
QString headSha; QString headSha;

View File

@@ -218,7 +218,7 @@ public:
bool synchronousForEachRefCmd(const QString &workingDirectory, QStringList args, bool synchronousForEachRefCmd(const QString &workingDirectory, QStringList args,
QString *output, QString *errorMessage = 0) const; QString *output, QString *errorMessage = 0) const;
bool synchronousRemoteCmd(const QString &workingDirectory, QStringList remoteArgs, bool synchronousRemoteCmd(const QString &workingDirectory, QStringList remoteArgs,
QString *output, QString *errorMessage, bool silent = false) const; QString *output = 0, QString *errorMessage = 0, bool silent = false) const;
QMap<QString,QString> synchronousRemotesList(const QString &workingDirectory, QMap<QString,QString> synchronousRemotesList(const QString &workingDirectory,
QString *errorMessage = 0) const; QString *errorMessage = 0) const;
@@ -325,7 +325,8 @@ public:
void launchRepositoryBrowser(const QString &workingDirectory); void launchRepositoryBrowser(const QString &workingDirectory);
QStringList synchronousRepositoryBranches(const QString &repositoryURL) const; QStringList synchronousRepositoryBranches(const QString &repositoryURL,
const QString &workingDirectory = QString()) const;
GitSettings *settings() const; GitSettings *settings() const;