protected override async Task RunProcess() { if (mode == DeleteBranchMode.ActualBranchOnly) { await AppendProcess(cli.DeleteRemote(deletingBranch)).WaitUntilComplete(); await repository.BranchUpdated(deletingBranch, null, await repository.GetBranchRef(deletingBranch).Take(1)); } else { var details = await repository.GetBranchDetails(deletingBranch).FirstAsync(); using (var unitOfWork = unitOfWorkFactory.CreateUnitOfWork()) { settings.DeleteBranchSettings(deletingBranch, unitOfWork); await unitOfWork.CommitAsync(); } if (mode != DeleteBranchMode.GroupOnly) { foreach (var branch in details.Branches) { await AppendProcess(cli.DeleteRemote(branch.Name)).WaitUntilComplete(); await repository.BranchUpdated(branch.Name, null, await repository.GetBranchRef(branch.Name).Take(1)); } } } }
public async Task AfterCreate(BranchGroup group, string latestBranchName, string createdBranchName, Func <IReactiveProcess, RepositoryActionReactiveProcessEntry> appendProcess) { var allRefs = await repository.GetAllBranchRefs().FirstOrDefaultAsync(); var targetUpdateBranchName = createdBranchName == group.GroupName ? await repository.GetNextCandidateBranch(group).FirstOrDefaultAsync() : group.GroupName; await appendProcess(cli.Push(createdBranchName, targetUpdateBranchName, force: true)); var createdRef = await repository.GetBranchRef(createdBranchName).FirstOrDefaultAsync(); await repository.BranchUpdated(targetUpdateBranchName, createdRef, await repository.GetBranchRef(targetUpdateBranchName).FirstOrDefaultAsync()); }
private async Task PushBranch(string downstreamBranch) { var pushProcess = cli.Push(downstreamBranch); var pushExitCode = await pushProcess.ExitCode(); await AppendProcess(pushProcess); if (pushExitCode == 0) { var newValue = await cli.ShowRef(downstreamBranch).FirstOutputMessage(); await repository.BranchUpdated(downstreamBranch, newValue, await repository.GetBranchRef(downstreamBranch).FirstOrDefaultAsync()); // Makes sure the local repository is updated with the new branch value await repository.GetBranchRef(downstreamBranch).Where(v => v == newValue).FirstOrDefaultAsync(); } }