コード例 #1
0
    /// <summary>
    /// Gets a value indicating whether a branch with name <paramref name="branch"/> (like 'master', 'dev') contains the commit with specified <paramref name="commitId"/>.
    /// Just like the <code>git branch --contains</code> it doesn't take possible reversions into account.
    /// </summary>
    public static Boolean BranchContains(this GitHttpClient git, String project, String repositoryId, String branch, String commitId)
    {
        var commitToFind = git.TryGetCommit(project: project, repositoryId: repositoryId, commitId: commitId);

        if (commitToFind == null)
        {
            return(false);
        }
        var committedDate = commitToFind.Committer.Date;     // TODO: It will usually be the same as the author's, but I have failed to check what date TFS actually uses in date queries.
        var criteria      = new GitQueryCommitsCriteria
        {
            ItemVersion = new GitVersionDescriptor
            {
                Version     = branch,
                VersionType = GitVersionType.Branch
            },
            FromDate = DateToString(committedDate.AddSeconds(-1)),     // Zero length interval seems to work, but just in case
            ToDate   = DateToString(committedDate.AddSeconds(1)),
        };
        var commitIds = git
                        .GetAllCommits(
            project: project,
            repositoryId: repositoryId,
            searchCriteria: criteria)
                        .Select(c => c.CommitId)
                        .ToHashSet(StringComparer.InvariantCultureIgnoreCase);

        return(commitIds.Contains(commitId));
    }
コード例 #2
0
 /// <summary>Tries to retrieve git commit with specified <paramref name="commitId"/> for a project.</summary>
 public static GitCommitRef TryGetCommit(this GitHttpClient git, String project, String repositoryId, String commitId)
 {
     return(git
            .GetAllCommits(
                project: project,
                repositoryId: repositoryId,
                searchCriteria: new GitQueryCommitsCriteria
     {
         Ids = new List <String>
         {
             commitId
         }
     })
            .SingleOrDefault());
 }