Ejemplo n.º 1
0
        public void AddMultiBranches(MRepository repository)
        {
            bool isFound;

            do
            {
                isFound = false;
                foreach (var commit in repository.Commits.Values)
                {
                    if (commit.BranchId == null && !commit.HasBranchName)
                    {
                        isFound = true;

                        BranchName branchName = AnonyousBranchPrefix + commit.ShortId;

                        if (commit.FirstChildren.Count() > 1)
                        {
                            branchName = MultibranchPrefix + commit.ShortId;
                        }
                        else
                        {
                            BranchName commitBranchName = commitBranchNameService.GetBranchName(commit);
                            if (commitBranchName != null)
                            {
                                branchName = commitBranchName;
                            }
                        }

                        MSubBranch subBranch = new MSubBranch
                        {
                            Repository  = repository,
                            SubBranchId = Guid.NewGuid().ToString(),
                            Name        = branchName,
                            TipCommitId = commit.Id,
                            IsActive    = false,
                        };

                        subBranch.IsAnonymous   = IsBranchNameAnonyous(branchName);
                        subBranch.IsMultiBranch = IsBranchNameMultiBranch(branchName);

                        repository.SubBranches[subBranch.SubBranchId] = subBranch;

                        commit.SetBranchName(branchName);
                        commit.SubBranchId = subBranch.SubBranchId;
                        SetSubBranchCommits(subBranch);
                    }
                }
            } while (isFound);
        }