Exemple #1
0
        /// <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;
        }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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;
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        /// <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;
        }