/// <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; }
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; }