Ejemplo n.º 1
0
        /// <summary>
        /// Updates the pull request data, abandoning or completing it.
        /// </summary>
        /// <param name="repositoryId">The repository</param>
        /// <param name="pullRequestId">The pull request to update</param>
        /// <param name="status">The new status</param>
        /// <param name="lastMergeSourceCommitId">The last merge source commit ID (to confirm)</param>
        /// <returns>The updated pull request</returns>
        public async Task<PullRequest> UpdatePullRequest(Guid repositoryId, int pullRequestId, PullRequestStatus status, string lastMergeSourceCommitId)
        {
            Assert.NotNull(lastMergeSourceCommitId, "lastMergeSourceCommitId");

            var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/pullRequests/{PullRequestId}", new HttpMethod("PATCH"));
            request.AddUrlSegment("RepositoryId", repositoryId.ToString());
            request.AddUrlSegment("PullRequestId", pullRequestId.ToString());
            request.AddBody(new
            {
                status = status.ToString().ToLower(),
                lastMergeSourceCommit = new { commitId = lastMergeSourceCommitId }
            });

            return await Executor.Execute<PullRequest>(request);
        }
Ejemplo n.º 2
0
        public async Task UpdateStatus(
            string organisation,
            int pullRequestId,
            PullRequestStatus status)
        {
            var table = await _azureStorage.GetTable(PullRequestsTable);

            var entity = new DynamicTableEntity(organisation.ToLowerInvariant(), pullRequestId.ToString())
            {
                ETag       = "*",
                Properties = { { "Status", new EntityProperty(status.ToString()) } }
            };

            var mergeOperation = TableOperation.Merge(entity);
            await table.ExecuteAsync(mergeOperation);
        }
        private void UpdatePullRequestWatermark(PullRequestStatus status, TeamProjectReference project)
        {
            VssPullRequestWatermarkEntity vssPullRequestWatermarkEntity = new VssPullRequestWatermarkEntity
            {
                RowUpdatedDate    = Helper.UtcNow,
                Organization      = this.vssClient.OrganizationName,
                ProjectId         = project.Id,
                ProjectName       = project.Name,
                PullRequestStatus = status.ToString(),
            };

            this.logger.LogInformation("Start ingesting pull request data...");
            using VssDbContext context = new VssDbContext(logger, this.sqlConnectionString);
            int ingestedResult = context.BulkInsertOrUpdate(new List <VssPullRequestWatermarkEntity> {
                vssPullRequestWatermarkEntity
            });

            this.logger.LogInformation($"Done ingesting {ingestedResult} records");
        }
        private DateTime GetPullRequestWatermark(TeamProjectReference project, PullRequestStatus status)
        {
            // Default by going back to 1 month if no data has been ingested for this repo
            DateTime mostRecentDate = DateTime.UtcNow.AddMonths(-1);

            // Get latest ingested date for pull request from pull request watermark table
            using VssDbContext context = new VssDbContext(logger, this.sqlConnectionString);
            VssPullRequestWatermarkEntity latestWatermark = context.VssPullRequestWatermarkEntities.Where(v => v.ProjectId == project.Id && v.PullRequestStatus == status.ToString()).FirstOrDefault();

            if (latestWatermark != null)
            {
                mostRecentDate = latestWatermark.RowUpdatedDate;
            }

            return(mostRecentDate);
        }
Ejemplo n.º 5
0
 public static Uri PullRequestsUri(PullRequestStatus status, int skip)
 {
     return(MakeUri(PullRequests, Settings.Default.SourceTfsRepositoryName, status.ToString(), skip));
 }