Ejemplo n.º 1
0
        private Dictionary <MergeRequestKey, Version> collectLatestVersions(ILocalCommitStorage repo)
        {
            Dictionary <MergeRequestKey, Version> result = new Dictionary <MergeRequestKey, Version>();

            IEnumerable <MergeRequestKey> mergeRequestKeys = _mergeRequestCache.GetMergeRequests(repo.ProjectKey)
                                                             .Select(x => new MergeRequestKey(repo.ProjectKey, x.IId));

            foreach (MergeRequestKey mrk in mergeRequestKeys)
            {
                Version version = _mergeRequestCache.GetLatestVersion(mrk);
                bool    newKey  = !_statistic.ContainsKey(mrk) || !_statistic[mrk].HasValue;
                if (version == null || (!newKey && version.Created_At <= _statistic[mrk].Value.LatestChange))
                {
                    continue;
                }

                Trace.TraceInformation(String.Format(
                                           "[GitBasedSizeCollector] Git statistic will be updated for MR: "
                                           + "Host={0}, Project={1}, IId={2}. Latest version created at: {3}",
                                           mrk.ProjectKey.HostName, mrk.ProjectKey.ProjectName, mrk.IId,
                                           version.Created_At.ToLocalTime().ToString()));

                result.Add(mrk, version);
            }

            return(result);
        }
Ejemplo n.º 2
0
        public CommitStorageUpdateContext GetContext()
        {
            if (_versions == null)
            {
                Debug.Assert(false);
                return(null);
            }

            if (!_versions.Any())
            {
                return(null);
            }

            Dictionary <string, HashSet <string> > baseToHeads = new Dictionary <string, HashSet <string> >();

            foreach (Version version in _versions)
            {
                string baseSha = version.Base_Commit_SHA;
                string headSha = version.Head_Commit_SHA;
                if (baseSha != null && headSha != null && baseSha != headSha)
                {
                    if (!baseToHeads.ContainsKey(baseSha))
                    {
                        baseToHeads[baseSha] = new HashSet <string>();
                    }
                    baseToHeads[baseSha].Add(headSha);
                }
            }

            Version latestVersion = _versions.OrderBy(x => x.Created_At).LastOrDefault();

            return(new FullUpdateContext(latestVersion.Created_At,
                                         new BaseToHeadsCollection(
                                             baseToHeads.ToDictionary(
                                                 item => new CommitInfo(item.Key),
                                                 item => item.Value.Select(x => new RelativeCommitInfo(x, null))))));
        }