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: