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:
@@ -593,15 +593,17 @@ void BranchModel::removeTag(const QModelIndex &idx)
|
||||
removeNode(idx);
|
||||
}
|
||||
|
||||
VcsCommand *BranchModel::checkoutBranch(const QModelIndex &idx)
|
||||
void BranchModel::checkoutBranch(const QModelIndex &idx, const QObject *context,
|
||||
const CommandHandler &handler)
|
||||
{
|
||||
QString branch = fullName(idx, !isLocal(idx));
|
||||
const QString branch = fullName(idx, !isLocal(idx));
|
||||
if (branch.isEmpty())
|
||||
return nullptr;
|
||||
return;
|
||||
|
||||
// No StashGuard since this function for now is only used with clean working dir.
|
||||
// If it is ever used from another place, please add StashGuard here
|
||||
return d->client->checkout(d->workingDirectory, branch, GitClient::StashMode::NoStash);
|
||||
d->client->checkout(d->workingDirectory, branch, GitClient::StashMode::NoStash,
|
||||
context, handler);
|
||||
}
|
||||
|
||||
bool BranchModel::branchIsMerged(const QModelIndex &idx)
|
||||
|
||||
Reference in New Issue
Block a user