aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <[email protected]>2021-12-01 11:22:02 +0200
committerOrgad Shaneh <[email protected]>2021-12-02 12:55:52 +0000
commitf02d143a81f741b3c82bc46778f0e9d609499739 (patch)
tree6889c373b4894a2510b35e7fcd3a65590c541125 /src/plugins/git/gitclient.cpp
parent251b47c8348045ac9b1a9c7f3a5c3dd66a1c9b98 (diff)
Git: Fix wording and availability of actions for commit range
Change-Id: Ic3a038b8246e9e6b69ae18fce519f93a685dc10c Reviewed-by: AndrĂ© Hartmann <[email protected]>
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r--src/plugins/git/gitclient.cpp108
1 files changed, 56 insertions, 52 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 257c74ef601..c644b4522b0 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -3739,75 +3739,79 @@ void GitClient::addChangeActions(QMenu *menu, const QString &source, const QStri
{
QTC_ASSERT(!change.isEmpty(), return);
const FilePath &workingDir = fileWorkingDirectory(source);
- menu->addAction(tr("Cherr&y-Pick Change %1").arg(change), [workingDir, change] {
+ const bool isRange = change.contains("..");
+ menu->addAction(tr("Cherr&y-Pick %1").arg(change), [workingDir, change] {
m_instance->synchronousCherryPick(workingDir, change);
});
- menu->addAction(tr("Re&vert Change %1").arg(change), [workingDir, change] {
+ menu->addAction(tr("Re&vert %1").arg(change), [workingDir, change] {
m_instance->synchronousRevert(workingDir, change);
});
- menu->addAction(tr("C&heckout Change %1").arg(change), [workingDir, change] {
- m_instance->checkout(workingDir, change);
- });
- connect(menu->addAction(tr("&Interactive Rebase from Change %1...").arg(change)),
- &QAction::triggered, [workingDir, change] {
- GitPlugin::startRebaseFromCommit(workingDir, change);
- });
- QAction *logAction = menu->addAction(tr("&Log for Change %1").arg(change), [workingDir, change] {
- m_instance->log(workingDir, QString(), false, {change});
- });
- const FilePath filePath = FilePath::fromString(source);
- if (!filePath.isDir()) {
- menu->addAction(tr("Sh&ow file \"%1\" on revision %2").arg(filePath.fileName()).arg(change),
- [workingDir, change, source] {
- m_instance->openShowEditor(workingDir, change, source);
+ if (!isRange) {
+ menu->addAction(tr("C&heckout %1").arg(change), [workingDir, change] {
+ m_instance->checkout(workingDir, change);
+ });
+ connect(menu->addAction(tr("&Interactive Rebase from %1...").arg(change)),
+ &QAction::triggered, [workingDir, change] {
+ GitPlugin::startRebaseFromCommit(workingDir, change);
});
}
- if (change.contains(".."))
+ QAction *logAction = menu->addAction(tr("&Log for %1").arg(change), [workingDir, change] {
+ m_instance->log(workingDir, QString(), false, {change});
+ });
+ if (isRange) {
menu->setDefaultAction(logAction);
- menu->addAction(tr("Add &Tag for Change %1...").arg(change), [workingDir, change] {
- QString output;
- QString errorMessage;
- m_instance->synchronousTagCmd(workingDir, QStringList(),
- &output, &errorMessage);
+ } else {
+ const FilePath filePath = FilePath::fromString(source);
+ if (!filePath.isDir()) {
+ menu->addAction(tr("Sh&ow file \"%1\" on revision %2").arg(filePath.fileName()).arg(change),
+ [workingDir, change, source] {
+ m_instance->openShowEditor(workingDir, change, source);
+ });
+ }
+ menu->addAction(tr("Add &Tag for %1...").arg(change), [workingDir, change] {
+ QString output;
+ QString errorMessage;
+ m_instance->synchronousTagCmd(workingDir, QStringList(), &output, &errorMessage);
- const QStringList tags = output.split('\n');
- BranchAddDialog dialog(tags, BranchAddDialog::Type::AddTag, Core::ICore::dialogParent());
+ const QStringList tags = output.split('\n');
+ BranchAddDialog dialog(tags, BranchAddDialog::Type::AddTag, Core::ICore::dialogParent());
- if (dialog.exec() == QDialog::Rejected)
- return;
+ if (dialog.exec() == QDialog::Rejected)
+ return;
- m_instance->synchronousTagCmd(workingDir,
- {dialog.branchName(), change},
- &output, &errorMessage);
- VcsOutputWindow::append(output);
- if (!errorMessage.isEmpty())
- VcsOutputWindow::append(errorMessage, VcsOutputWindow::MessageStyle::Error);
- });
+ m_instance->synchronousTagCmd(workingDir, {dialog.branchName(), change},
+ &output, &errorMessage);
+ VcsOutputWindow::append(output);
+ if (!errorMessage.isEmpty())
+ VcsOutputWindow::append(errorMessage, VcsOutputWindow::MessageStyle::Error);
+ });
- auto resetChange = [workingDir, change](const QByteArray &resetType) {
- m_instance->reset(
- workingDir, QLatin1String("--" + resetType), change);
- };
- auto resetMenu = new QMenu(tr("&Reset to Change %1").arg(change), menu);
- resetMenu->addAction(tr("&Hard"), std::bind(resetChange, "hard"));
- resetMenu->addAction(tr("&Mixed"), std::bind(resetChange, "mixed"));
- resetMenu->addAction(tr("&Soft"), std::bind(resetChange, "soft"));
- menu->addMenu(resetMenu);
+ auto resetChange = [workingDir, change](const QByteArray &resetType) {
+ m_instance->reset(workingDir, QLatin1String("--" + resetType), change);
+ };
+ auto resetMenu = new QMenu(tr("&Reset to Change %1").arg(change), menu);
+ resetMenu->addAction(tr("&Hard"), std::bind(resetChange, "hard"));
+ resetMenu->addAction(tr("&Mixed"), std::bind(resetChange, "mixed"));
+ resetMenu->addAction(tr("&Soft"), std::bind(resetChange, "soft"));
+ menu->addMenu(resetMenu);
+ }
- menu->addAction(tr("Di&ff Against %1").arg(change),
+ menu->addAction((isRange ? tr("Di&ff %1") : tr("Di&ff Against %1")).arg(change),
[workingDir, change] {
m_instance->diffRepository(workingDir, change, {});
});
- if (!m_instance->m_diffCommit.isEmpty()) {
- menu->addAction(tr("Diff &Against Saved %1").arg(m_instance->m_diffCommit),
- [workingDir, change] {
- m_instance->diffRepository(workingDir, m_instance->m_diffCommit, change);
- m_instance->m_diffCommit.clear();
+ if (!isRange) {
+ if (!m_instance->m_diffCommit.isEmpty()) {
+ menu->addAction(tr("Diff &Against Saved %1").arg(m_instance->m_diffCommit),
+ [workingDir, change] {
+ m_instance->diffRepository(workingDir, m_instance->m_diffCommit, change);
+ m_instance->m_diffCommit.clear();
+ });
+ }
+ menu->addAction(tr("&Save for Diff"), [change] {
+ m_instance->m_diffCommit = change;
});
}
- menu->addAction(tr("&Save for Diff"), [change] {
- m_instance->m_diffCommit = change;
- });
}
FilePath GitClient::fileWorkingDirectory(const QString &file)