예제 #1
0
        private void LstStartRelease_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_loading)
            {
                return;
            }

            lstEndRelease.DataSource = null;

            if (lstStartRelease.SelectedItem == null)
            {
                return;
            }

            ReleaseTag selectedRelease = lstStartRelease.SelectedItem as ReleaseTag;

            btnSelectedRelease.Enabled = (selectedRelease != null);

            if (selectedRelease == null)
            {
                return;
            }

            lstEndRelease.DisplayMember = "Name";
            lstEndRelease.DataSource    = _releaseTags.Where(r => r.Release >= selectedRelease.Release).OrderByDescending(r => r.Release).ToList();

            lstEndRelease.SelectedIndex = -1;
        }
예제 #2
0
        private async Task LoadSelectedReleaseNotesAsync()
        {
            IWorkItemRepository workItemRepository = _provider.GetRequiredService <IWorkItemRepository>();

            ReleaseTag releaseTag = lstStartRelease.SelectedItem as ReleaseTag;

            IList <WorkItem> workItems = await workItemRepository.GetReleaseWorkItemsAsync(releaseTag);

            DisplayWorkItems(workItems);
        }
예제 #3
0
        private async Task LoadSelectedRangeReleaseNotesAsync()
        {
            IWorkItemRepository workItemRepository = _provider.GetRequiredService <IWorkItemRepository>();

            ReleaseTag @base = lstStartRelease.SelectedItem as ReleaseTag;
            ReleaseTag head  = lstEndRelease.SelectedItem as ReleaseTag;

            IList <WorkItem> workItems = await workItemRepository.GetReleaseWorkItemsInRangeAsync(@base, head);

            DisplayWorkItems(workItems);
        }
예제 #4
0
        protected virtual async Task <IList <WorkItem> > GetWorkItemsInReleaseAsync(GitHubClient client, long repositoryId, ReleaseTag releaseTag)
        {
            IList <WorkItem> workItems = new List <WorkItem>();
            CompareResult    commits   = null;

            var advantageReleaseTags = await GetReleaseTagsAsync(repositoryId);

            var orderedReleaseTags = advantageReleaseTags.
                                     OrderByDescending(r => r.Release).
                                     ToList();

            var selectedReleaseIndex = orderedReleaseTags.FindIndex(r => r.Release == releaseTag.Release);

            string  baseSha        = String.Empty;
            string  headSha        = String.Empty;
            Version releaseVersion = null;

            if (selectedReleaseIndex == -1)
            {
                // Not found
                return(workItems);
            }
            else if (selectedReleaseIndex == orderedReleaseTags.Count)
            {
                // Latest release
                //baseSha = orderedReleaseTags[selectedReleaseIndex-1].CommitSha;
                //headSha = orderedReleaseTags[selectedReleaseIndex].CommitSha;
                //releaseVersion = orderedReleaseTags[selectedReleaseIndex - 1].Release;
            }
            else
            {
                baseSha        = orderedReleaseTags[selectedReleaseIndex].CommitSha;
                headSha        = orderedReleaseTags[selectedReleaseIndex - 1].CommitSha;
                releaseVersion = orderedReleaseTags[selectedReleaseIndex].Release;
            }

            commits = await client.Repository.Commit.Compare
                      (
                repositoryId,
                baseSha,
                headSha
                      );

            foreach (GitHubCommit commit in commits.Commits)
            {
                workItems.Add(GetWorkItemFromGitHubCommit(commit, releaseVersion));
            }

            //for (int i = 1; i < selectedReleaseTags.Count() - 1; i++)
            //{
            //    var selectedBase = selectedReleaseTags[i + 1];
            //    var selectedHead = selectedReleaseTags[i];

            //    commits = await client.Repository.Commit.Compare
            //    (
            //        repositoryId,
            //        selectedBase.CommitSha,
            //        selectedHead.CommitSha
            //    );

            //    foreach (GitHubCommit commit in commits.Commits)
            //    {
            //        workItems.Add(GetWorkItemFromGitHubCommit(commit, selectedHead.Release));
            //    }
            //}

            return(workItems);
        }
예제 #5
0
        protected virtual async Task <IList <WorkItem> > GetWorkItemsInRangeAsync(GitHubClient client, long repositoryId, ReleaseTag @base, ReleaseTag head)
        {
            IList <WorkItem> workItems = new List <WorkItem>();
            CompareResult    commits   = null;

            var advantageReleaseTags = await GetReleaseTagsAsync(repositoryId);

            var selectedReleaseTags = advantageReleaseTags.
                                      Where(r => r.Release >= @base.Release && r.Release <= head.Release && r.IsPatch == false).
                                      OrderByDescending(r => r.Release).
                                      ToList();

            if (selectedReleaseTags.Count < 2)
            {
                return(workItems);
            }

            string baseSha = selectedReleaseTags[1].CommitSha;
            string headSha = selectedReleaseTags[0].CommitSha;

            commits = await client.Repository.Commit.Compare
                      (
                repositoryId,
                baseSha,
                headSha
                      );

            foreach (GitHubCommit commit in commits.Commits)
            {
                workItems.Add(GetWorkItemFromGitHubCommit(commit, selectedReleaseTags[0].Release));
            }

            for (int i = 1; i < selectedReleaseTags.Count() - 1; i++)
            {
                var selectedBase = selectedReleaseTags[i + 1];
                var selectedHead = selectedReleaseTags[i];

                commits = await client.Repository.Commit.Compare
                          (
                    repositoryId,
                    selectedBase.CommitSha,
                    selectedHead.CommitSha
                          );

                foreach (GitHubCommit commit in commits.Commits)
                {
                    workItems.Add(GetWorkItemFromGitHubCommit(commit, selectedHead.Release));
                }
            }

            return(workItems);
        }
예제 #6
0
        public async Task <IList <WorkItem> > GetReleaseWorkItemsAsync(long repositoryId, ReleaseTag releaseTag)
        {
            GitHubClient client = GetClient();

            return(await GetWorkItemsInReleaseAsync(client, repositoryId, releaseTag));
        }
예제 #7
0
        public async Task <IList <WorkItem> > GetReleaseWorkItemsAsync(ReleaseTag releaseTag)
        {
            Repository gitHubRepo = await GetRepositoryAsync();

            return(await GetReleaseWorkItemsAsync(gitHubRepo.Id, releaseTag));
        }
예제 #8
0
        public async Task <IList <WorkItem> > GetReleaseWorkItemsInRangeAsync(long repositoryId, ReleaseTag @base, ReleaseTag head)
        {
            GitHubClient client = GetClient();

            return(await GetWorkItemsInRangeAsync(client, repositoryId, @base, head));
        }
예제 #9
0
        public async Task <IList <WorkItem> > GetReleaseWorkItemsInRangeAsync(ReleaseTag @base, ReleaseTag head)
        {
            Repository gitHubRepo = await GetRepositoryAsync();

            return(await GetReleaseWorkItemsInRangeAsync(gitHubRepo.Id, @base, head));
        }