Git: Allow removing stale remote branches

... from the Branch View context menu on a
specific remote.

Change-Id: Ic7772abe32795a5d11bd4cae989f8d66cc4322e0
Reviewed-by: Miklós Márton <martonmiklosqdev@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Andre Hartmann
2019-12-12 20:45:42 +01:00
committed by André Hartmann
parent 3dc511f1d1
commit 00e04d5022
3 changed files with 18 additions and 0 deletions

View File

@@ -212,6 +212,12 @@ void BranchView::slotCustomContextMenu(const QPoint &point)
GitPlugin::client()->fetch(m_repository, *remote);
});
contextMenu.addSeparator();
if (!remote->isEmpty()) {
contextMenu.addAction(tr("Remove &Stale Branches"), this, [this, &remote]() {
GitPlugin::client()->removeStaleRemoteBranches(m_repository, *remote);
});
contextMenu.addSeparator();
}
contextMenu.addAction(tr("Manage &Remotes..."), GitPlugin::instance(),
&GitPlugin::manageRemotes);
}

View File

@@ -1312,6 +1312,17 @@ void GitClient::reset(const QString &workingDirectory, const QString &argument,
vcsExec(workingDirectory, arguments, nullptr, true, flags);
}
void GitClient::removeStaleRemoteBranches(const QString &workingDirectory, const QString &remote)
{
const QStringList arguments = {"remote", "prune", remote};
VcsCommand *command = vcsExec(workingDirectory, arguments, nullptr, true,
VcsCommand::ShowSuccessMessage);
connect(command, &VcsCommand::success,
this, [workingDirectory]() { GitPlugin::instance()->updateBranches(workingDirectory); });
}
void GitClient::recoverDeletedFiles(const QString &workingDirectory)
{
const SynchronousProcessResponse response =

View File

@@ -155,6 +155,7 @@ public:
const QString &workingDir, const QString &file, const QString &revision = QString(),
int lineNumber = -1, const QStringList &extraOptions = QStringList()) override;
void reset(const QString &workingDirectory, const QString &argument, const QString &commit = QString());
void removeStaleRemoteBranches(const QString &workingDirectory, const QString &remote);
void recoverDeletedFiles(const QString &workingDirectory);
void addFile(const QString &workingDirectory, const QString &fileName);
bool synchronousLog(const QString &workingDirectory, const QStringList &arguments,