private void BuildRepository(IRepository repo, ZippedRepo source) { foreach (string name in source.GetBranches()) { var commits = source.GetBranch(name); CherryPickCommits(repo, commits.ToArray(), name); } // TODO (MP) Handle anon branches RecordMerges(repo, source); }
/// <summary> /// Zips the configured repositories. /// </summary> public IRepository Zip() { this.logger.Log("Reading repositories..."); var zippedRepo = new ZippedRepo(this.repositories, this.config); this.logger.Log("Zipping the following branches: " + string.Join(", ", zippedRepo.GetBranches())); this.logger.Log("Initialize target repository..."); IRepository targetRepo = InitTargetRepo(); this.logger.Log("Building target repository..."); BuildRepository(targetRepo, zippedRepo); return(targetRepo); }
void RecordMerges(IRepository repo, ZippedRepo source) { this.logger.Log("Recording merges..."); var allMerges = source.GetMerges().ToList(); var knownMerges = allMerges.Where(m => commitMap.ContainsKey(m.Sha)).ToList(); this.logger.Log("Unknown merges: " + string.Join(", ", allMerges.Except(knownMerges))); var originalMerges = knownMerges.ToDictionary(merge => commitMap[merge.Sha]); if (this.config.DryRun) { return; } if (this.config.GraftMerges) { GraftMerges(repo, originalMerges); } else { RewriteMerges(repo, originalMerges); } }