コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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);
            }
        }