forked from qt-creator/qt-creator
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:
committed by
André Hartmann
parent
7b73d286fc
commit
a59420a9c3
@@ -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);
|
||||||
branchAddDialog.setBranchName(suggestedName);
|
if (isTracked) {
|
||||||
|
const QString suggestedName = GitClient::suggestedLocalBranchName(localNames, trackedBranch);
|
||||||
|
branchAddDialog.setBranchName(suggestedName);
|
||||||
|
}
|
||||||
branchAddDialog.setTrackedBranchName(isTracked ? trackedBranch : QString(), !isLocal);
|
branchAddDialog.setTrackedBranchName(isTracked ? trackedBranch : QString(), !isLocal);
|
||||||
branchAddDialog.setCheckoutVisible(true);
|
branchAddDialog.setCheckoutVisible(true);
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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:
|
||||||
|
Reference in New Issue
Block a user