Пример #1
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;
        }
Пример #2
0
        public int GetCommits(string[] args)
        {
            if (args.Length < 1)
            {
                Console.Error.WriteLine("usage: {0} <url> Git.GetCommits [repositoryId]", Program.ProgramName);
                return 1;
            }

            Guid repositoryId = new Guid(args[0]);

            CommitFilters filters = new CommitFilters();

            for (int i = 1; i < args.Length; i++)
            {
                if (args[i].StartsWith("--") || args[i].StartsWith("/"))
                {
                    string arg = args[i].Substring(args[i].StartsWith("--") ? 2 : 1);
                    string[] options = arg.Split(new char[] { '=' }, 2);

                    if (options[0] != null &&
                        options[0].Equals("author", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.Author = options[1];
                    }
                    else if (options[0] != null &&
                        options[0].Equals("committer", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.Committer = options[1];
                    }
                    else if (options[0] != null &&
                        options[0].Equals("itempath", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.ItemPath = options[1];
                    }
                    else if (options[0] != null &&
                        options[0].Equals("fromdate", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.FromDate = DateTime.Parse(options[1]);
                    }
                    else if (options[0] != null &&
                        options[0].Equals("todate", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.ToDate = DateTime.Parse(options[1]);
                    }
                    else if (options[0] != null &&
                        options[0].Equals("skip", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.Skip = int.Parse(options[1]);
                    }
                    else if (options[0] != null &&
                        options[0].Equals("count", StringComparison.InvariantCultureIgnoreCase))
                    {
                        filters.Count = int.Parse(options[1]);
                    }
                    else
                    {
                        Console.Error.WriteLine("{0}: unknown option '{1}'", Program.ProgramName, args[i]);
                        return 1;
                    }
                }
            }

            IEnumerable<Commit> commits = null;

            Task.Run(async () =>
            {
                commits = await Client.Git.GetCommits(repositoryId, filters);
            }).Wait();

            foreach (Commit commit in commits)
            {
                Console.WriteLine("Commit {0}:", commit.Id);
                Model.Write(commit);
            }

            return 0;
        }