Git: Improve the Checkout > Create Branch > Add dialog

Suggest a local branch name here also.

Fixes: QTCREATORBUG-23797
Change-Id: I16228507858380bc2ff6dc8590279155624d3d28
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Andre Hartmann
2020-04-03 18:12:02 +02:00
committed by André Hartmann
parent 7b73d286fc
commit a59420a9c3
3 changed files with 22 additions and 12 deletions

View File

@@ -319,19 +319,11 @@ bool BranchView::add()
const QStringList localNames = m_model->localBranchNames(); const QStringList localNames = m_model->localBranchNames();
QString suggestedName;
if (isTracked) {
const QString suggestedNameBase = trackedBranch.mid(trackedBranch.lastIndexOf('/') + 1);
suggestedName = suggestedNameBase;
int i = 2;
while (localNames.contains(suggestedName)) {
suggestedName = suggestedNameBase + QString::number(i);
++i;
}
}
BranchAddDialog branchAddDialog(localNames, BranchAddDialog::Type::AddBranch, this); BranchAddDialog branchAddDialog(localNames, BranchAddDialog::Type::AddBranch, this);
if (isTracked) {
const QString suggestedName = GitClient::suggestedLocalBranchName(localNames, trackedBranch);
branchAddDialog.setBranchName(suggestedName); branchAddDialog.setBranchName(suggestedName);
}
branchAddDialog.setTrackedBranchName(isTracked ? trackedBranch : QString(), !isLocal); branchAddDialog.setTrackedBranchName(isTracked ? trackedBranch : QString(), !isLocal);
branchAddDialog.setCheckoutVisible(true); branchAddDialog.setCheckoutVisible(true);

View File

@@ -1285,7 +1285,9 @@ QStringList GitClient::setupCheckoutArguments(const QString &workingDirectory,
} }
} }
const QString suggestedName = suggestedLocalBranchName(localBranches, remoteBranch);
BranchAddDialog branchAddDialog(localBranches, BranchAddDialog::Type::AddBranch, ICore::dialogParent()); BranchAddDialog branchAddDialog(localBranches, BranchAddDialog::Type::AddBranch, ICore::dialogParent());
branchAddDialog.setBranchName(suggestedName);
branchAddDialog.setTrackedBranchName(remoteBranch, true); branchAddDialog.setTrackedBranchName(remoteBranch, true);
if (branchAddDialog.exec() != QDialog::Accepted) if (branchAddDialog.exec() != QDialog::Accepted)
@@ -3596,6 +3598,20 @@ GitRemote::GitRemote(const QString &location) : Core::IVersionControl::RepoUrl(l
isValid = QDir(path).exists() || QDir(path + ".git").exists(); isValid = QDir(path).exists() || QDir(path + ".git").exists();
} }
QString GitClient::suggestedLocalBranchName(const QStringList localNames,
const QString trackedBranch)
{
const QString suggestedNameBase = trackedBranch.mid(trackedBranch.lastIndexOf('/') + 1);
QString suggestedName = suggestedNameBase;
int i = 2;
while (localNames.contains(suggestedName)) {
suggestedName = suggestedNameBase + QString::number(i);
++i;
}
return suggestedName;
}
void GitClient::addChangeActions(QMenu *menu, const QString &workingDir, const QString &change) void GitClient::addChangeActions(QMenu *menu, const QString &workingDir, const QString &change)
{ {
QTC_ASSERT(!change.isEmpty(), return); QTC_ASSERT(!change.isEmpty(), return);

View File

@@ -354,6 +354,8 @@ public:
VcsBase::VcsCommand *asyncUpstreamStatus(const QString &workingDirectory, VcsBase::VcsCommand *asyncUpstreamStatus(const QString &workingDirectory,
const QString &branch, const QString &upstream); const QString &branch, const QString &upstream);
static QString suggestedLocalBranchName(const QStringList existingLocalNames,
const QString trackedBranch);
static void addChangeActions(QMenu *menu, const QString &workingDir, const QString &change); static void addChangeActions(QMenu *menu, const QString &workingDir, const QString &change);
private: private: