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); }