From a59420a9c3e18b0f0b38d25837b5aa5adf85dd6b Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Fri, 3 Apr 2020 18:12:02 +0200 Subject: [PATCH] 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 --- src/plugins/git/branchview.cpp | 16 ++++------------ src/plugins/git/gitclient.cpp | 16 ++++++++++++++++ src/plugins/git/gitclient.h | 2 ++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/plugins/git/branchview.cpp b/src/plugins/git/branchview.cpp index c9bc67cb6b2..c28d9fc67b2 100644 --- a/src/plugins/git/branchview.cpp +++ b/src/plugins/git/branchview.cpp @@ -319,19 +319,11 @@ bool BranchView::add() 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.setBranchName(suggestedName); + if (isTracked) { + const QString suggestedName = GitClient::suggestedLocalBranchName(localNames, trackedBranch); + branchAddDialog.setBranchName(suggestedName); + } branchAddDialog.setTrackedBranchName(isTracked ? trackedBranch : QString(), !isLocal); branchAddDialog.setCheckoutVisible(true); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 369dc06708f..eea19d24d78 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -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.setBranchName(suggestedName); branchAddDialog.setTrackedBranchName(remoteBranch, true); 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(); } +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) { QTC_ASSERT(!change.isEmpty(), return); diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index c159fb31375..defe117d514 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -354,6 +354,8 @@ public: VcsBase::VcsCommand *asyncUpstreamStatus(const QString &workingDirectory, 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); private: