From 2ac65aaa7ca509fbfd82a32f0ee5367ca63738e1 Mon Sep 17 00:00:00 2001 From: Petar Perisin <petar.perisin@gmail.com> Date: Thu, 11 Jul 2013 23:38:33 +0200 Subject: [PATCH] Git - Add Cherry Pick in branches dialog Change-Id: Ic01846e3f8622cfa7b6c6ada8b626af6fa8cb3e9 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/git/branchdialog.cpp | 11 +++++++++++ src/plugins/git/branchdialog.h | 1 + src/plugins/git/branchdialog.ui | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp index 55305addd8c..0955b12bc1b 100644 --- a/src/plugins/git/branchdialog.cpp +++ b/src/plugins/git/branchdialog.cpp @@ -69,6 +69,7 @@ BranchDialog::BranchDialog(QWidget *parent) : connect(m_ui->logButton, SIGNAL(clicked()), this, SLOT(log())); connect(m_ui->mergeButton, SIGNAL(clicked()), this, SLOT(merge())); connect(m_ui->rebaseButton, SIGNAL(clicked()), this, SLOT(rebase())); + connect(m_ui->cherryPickButton, SIGNAL(clicked()), this, SLOT(cherryPick())); connect(m_ui->trackButton, SIGNAL(clicked()), this, SLOT(setRemoteTracking())); m_ui->branchView->setModel(m_model); @@ -123,6 +124,7 @@ void BranchDialog::enableButtons() m_ui->checkoutButton->setEnabled(hasActions && !currentSelected); m_ui->rebaseButton->setEnabled(hasActions && !currentSelected); m_ui->mergeButton->setEnabled(hasActions && !currentSelected); + m_ui->cherryPickButton->setEnabled(hasActions && !currentSelected); m_ui->trackButton->setEnabled(hasActions && currentLocal && !currentSelected && !isTag); } @@ -338,6 +340,15 @@ void BranchDialog::rebase() client->rebase(m_repository, baseBranch); } +void BranchDialog::cherryPick() +{ + QModelIndex idx = selectedIndex(); + QTC_CHECK(idx != m_model->currentBranch()); // otherwise the button would not be enabled! + + const QString branch = m_model->fullName(idx, true); + GitPlugin::instance()->gitClient()->synchronousCherryPick(m_repository, branch); +} + void BranchDialog::setRemoteTracking() { m_model->setRemoteTracking(selectedIndex()); diff --git a/src/plugins/git/branchdialog.h b/src/plugins/git/branchdialog.h index 12d19e5e4e6..3343becfa97 100644 --- a/src/plugins/git/branchdialog.h +++ b/src/plugins/git/branchdialog.h @@ -74,6 +74,7 @@ private slots: void log(); void merge(); void rebase(); + void cherryPick(); void setRemoteTracking(); private: diff --git a/src/plugins/git/branchdialog.ui b/src/plugins/git/branchdialog.ui index c57bba79065..11adc4cb4aa 100644 --- a/src/plugins/git/branchdialog.ui +++ b/src/plugins/git/branchdialog.ui @@ -153,6 +153,16 @@ </item> </layout> </item> + <item> + <widget class="QPushButton" name="cherryPickButton"> + <property name="toolTip"> + <string>Cherry Pick top commit from selected branch</string> + </property> + <property name="text"> + <string>Cherry Pick</string> + </property> + </widget> + </item> <item> <widget class="QPushButton" name="trackButton"> <property name="toolTip"> -- GitLab