forked from qt-creator/qt-creator
VcsBase: Introduce vcsExecWithHandler()
Before, vcsExec() returned already started VcsCommand. Later, callers of vcsExec() were establishing connections to the retured VcsCommand::done() signal. However, when process fails to start (e.g. because of non-existing executable), the done() signal may be emitted synchonously from inside VcsCommand::start(). In this scenario callers of VcsCommand could miss the emission of done() signal and connect to already finished command. Instead, provide a vcsExecWithHandler() function which takes a handler to be called when command finished. In addition it takes the context object, too. Don't return VcsCommand from vcsExec() anymore. Change-Id: I2fb5fbe5d27632ea039c650d37e5d7d1b60cebc0 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -9,7 +9,9 @@
|
||||
|
||||
#include <optional>
|
||||
|
||||
namespace VcsBase { class VcsCommand; }
|
||||
namespace VcsBase {
|
||||
class CommandResult;
|
||||
}
|
||||
|
||||
namespace Git::Internal {
|
||||
|
||||
@@ -51,7 +53,8 @@ public:
|
||||
|
||||
void removeBranch(const QModelIndex &idx);
|
||||
void removeTag(const QModelIndex &idx);
|
||||
VcsBase::VcsCommand *checkoutBranch(const QModelIndex &idx);
|
||||
void checkoutBranch(const QModelIndex &idx, const QObject *context = nullptr,
|
||||
const std::function<void(const VcsBase::CommandResult &)> &handler = {});
|
||||
bool branchIsMerged(const QModelIndex &idx);
|
||||
QModelIndex addBranch(const QString &name, bool track, const QModelIndex &trackedBranch);
|
||||
void setRemoteTracking(const QModelIndex &trackingIndex);
|
||||
|
||||
Reference in New Issue
Block a user