/// <summary> /// Get a list of pushes in a Git repository. /// </summary> /// <param name="repositoryId">The ID of the repository to query</param> /// <param name="filters">Optional push filters</param> /// <returns>A list of pushes in the Git repository</returns> public async Task<IEnumerable<PushDetails>> GetPushes(Guid repositoryId, PushFilters filters = null) { var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/pushes"); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); filters = filters ?? new PushFilters(); request.AddOptionalParameter("fromDate", filters.FromDate); request.AddOptionalParameter("toDate", filters.ToDate); request.AddOptionalParameter("pusherId", filters.Pusher); request.AddOptionalParameter("$skip", filters.Skip, () => { return filters.Skip > 0; }); request.AddOptionalParameter("$top", filters.Count, () => { return filters.Count > 0; }); Sequence<PushDetails> list = await Executor.Execute<Sequence<PushDetails>>(request); return list.Value; }
/// <summary> /// Get the item in the repository at the given path. /// </summary> /// <param name="repositoryId">The ID of the repository to query</param> /// <param name="path">Path of the item to query</param> /// <param name="filters">Filters to provide additional query information</param> /// <param name="includeMetadata">To include item metadata or not</param> /// <returns>A list of commits in the Git repository</returns> public async Task<IEnumerable<Item>> GetItem(Guid repositoryId, string path, ItemFilters filters = null, bool includeMetadata = false) { Assert.NotNull(repositoryId, "repositoryId"); Assert.NotNull(path, "path"); var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/items"); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); // This header instructs VSO to return metadata rather than the item contents request.AddHeader("Accept", "application/json"); filters = filters ?? new ItemFilters(); request.AddParameter("scopePath", path); request.AddOptionalParameter("recursionLevel", filters.RecursionLevel, () => { return filters.RecursionLevel != RecursionLevel.None; }); if (includeMetadata) { request.AddParameter("includeContentMetadata", "true"); } Sequence<Item> list = await Executor.Execute<Sequence<Item>>(request); return list.Value; }
/// <summary> /// Get a commit in a repository. /// </summary> /// <param name="repositoryId">The ID of the repository</param> /// <param name="commitId">The ID of the commit</param> /// <param name="changeCount">The number of changes to return, or 0 for none.</param> /// <returns>The commit in the Git repository</returns> public async Task<Commit> GetCommit(Guid repositoryId, ObjectId commitId, int changeCount = 0) { Assert.NotNull("commitId", "commitId"); var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/commits/{CommitId}"); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); request.AddUrlSegment("CommitId", commitId.ToString()); request.AddOptionalParameter("changeCount", changeCount, () => { return changeCount > 0; }); return await Executor.Execute<Commit>(request); }
/// <summary> /// Get a list of pull requests in a Git repository. /// </summary> /// <param name="repositoryId">The ID of the repository to query</param> /// <param name="filters">Optional pull request query filters</param> /// <returns>A list of pull requests in the Git repository</returns> public async Task<IEnumerable<PullRequest>> GetPullRequests(Guid repositoryId, PullRequestFilters filters = null) { var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/pullRequests"); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); filters = filters ?? new PullRequestFilters(); request.AddOptionalParameter("status", filters.Status.ToString().ToLower(), () => { return filters.Status != null; }); request.AddOptionalParameter("creatorId", filters.CreatorId); request.AddOptionalParameter("reviewerId", filters.ReviewerId); request.AddOptionalParameter("sourceRefName", filters.SourceRefName); request.AddOptionalParameter("targetRefName", filters.TargetRefName); request.AddOptionalParameter("$top", filters.Count, () => { return filters.Count > 0; }); request.AddOptionalParameter("$skip", filters.Skip, () => { return filters.Skip > 0; }); Sequence<PullRequest> list = await Executor.Execute<Sequence<PullRequest>>(request); return list.Value; }
/// <summary> /// Get the differences between two commits. /// </summary> /// <param name="repositoryId">The repository containing the commits.</param> /// <param name="filters">The data to difference.</param> /// <returns>The differences betweeo commits.</returns> public async Task<Diff> GetDiff(Guid repositoryId, DiffFilters filters = null) { var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/diffs/commits"); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); filters = filters ?? new DiffFilters(); request.AddOptionalParameter("targetVersionType", filters.TargetRevision.Type.ToString().ToLowerInvariant(), () => { return filters.TargetRevision != null; }); request.AddOptionalParameter("targetVersion", filters.TargetRevision.Version, () => { return filters.TargetRevision != null; }); request.AddOptionalParameter("baseVersionType", filters.BaseRevision.Type.ToString().ToLowerInvariant(), () => { return filters.BaseRevision != null; }); request.AddOptionalParameter("baseVersion", filters.BaseRevision.Version, () => { return filters.BaseRevision != null; }); request.AddOptionalParameter("$skip", filters.Skip, () => { return filters.Skip > 0; }); request.AddOptionalParameter("$top", filters.Count, () => { return filters.Count > 0; }); return await Executor.Execute<Diff>(request); }
/// <summary> /// Get a list of commits in a Git repository. /// </summary> /// <param name="repositoryId">The ID of the repository to query</param> /// <param name="filters">Optional commit query filters</param> /// <returns>A list of commits in the Git repository</returns> public async Task<IEnumerable<Commit>> GetCommits(Guid repositoryId, CommitFilters filters = null) { var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/commits"); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); filters = filters ?? new CommitFilters(); request.AddOptionalParameter("itemPath", filters.ItemPath); request.AddOptionalParameter("committer", filters.Committer); request.AddOptionalParameter("fromDate", filters.FromDate); request.AddOptionalParameter("toDate", filters.ToDate); request.AddOptionalParameter("$skip", filters.Skip, () => { return filters.Skip > 0; }); request.AddOptionalParameter("$top", filters.Count, () => { return filters.Count > 0; }); Sequence<Commit> list = await Executor.Execute<Sequence<Commit>>(request); return list.Value; }