예제 #1
0
            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());
        }
예제 #3
0
            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();
                }
            }