当前位置: 首页>>代码示例>>Golang>>正文


Golang Repo.GetCommitDetails方法代码示例

本文整理汇总了Golang中github.com/google/git-appraise/repository.Repo.GetCommitDetails方法的典型用法代码示例。如果您正苦于以下问题:Golang Repo.GetCommitDetails方法的具体用法?Golang Repo.GetCommitDetails怎么用?Golang Repo.GetCommitDetails使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/google/git-appraise/repository.Repo的用法示例。


在下文中一共展示了Repo.GetCommitDetails方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: createDifferentialDiff

// createDifferentialDiff generates a Phabricator resource that represents a diff between two revisions.
//
// The generated resource includes metadata about how the diff was generated, and a JSON representation
// of the changes from the diff, as parsed by Phabricator.
func (arc Arcanist) createDifferentialDiff(repo repository.Repo, mergeBase, revision string, req request.Request, priorDiffs []string) (*differentialDiff, error) {
	repoCommitDetails, err := repo.GetCommitDetails(revision)
	if err != nil {
		return nil, err
	}
	var revisionDetails CommitDetails
	revisionDetails.Commit = revision
	revisionDetails.Author = repoCommitDetails.Author
	revisionDetails.AuthorEmail = repoCommitDetails.AuthorEmail
	revisionDetails.Tree = repoCommitDetails.Tree
	revisionDetails.Time = repoCommitDetails.Time
	revisionDetails.Parents = repoCommitDetails.Parents
	revisionDetails.Summary = repoCommitDetails.Summary
	changes, err := arc.getDiffChanges(repo, mergeBase, revision)
	if err != nil {
		return nil, err
	}
	createRequest := differentialCreateDiffRequest{
		Branch:                    abbreviateRefName(req.ReviewRef),
		SourceControlSystem:       "git",
		SourceControlBaseRevision: string(mergeBase),
		SourcePath:                repo.GetPath(),
		LintStatus:                "skip",
		UnitStatus:                "skip",
		Changes:                   changes,
	}
	var createResponse differentialCreateDiffResponse
	runArcCommandOrDie("differential.creatediff", createRequest, &createResponse)
	if createResponse.Error != "" {
		return nil, fmt.Errorf(createResponse.ErrorMessage)
	}

	localCommits := make(map[string]interface{})
	for _, priorDiff := range priorDiffs {
		diffID, err := strconv.Atoi(priorDiff)
		if err != nil {
			return nil, err
		}
		queryRequest := differentialQueryDiffsRequest{[]int{diffID}}
		var queryResponse differentialQueryDiffsResponse
		runArcCommandOrDie("differential.querydiffs", queryRequest, &queryResponse)
		if queryResponse.Error != "" {
			return nil, fmt.Errorf(queryResponse.ErrorMessage)
		}
		priorProperty := queryResponse.Response[priorDiff].Properties
		if priorPropertyMap, ok := priorProperty.(map[string]interface{}); ok {
			if localCommitsProperty, ok := priorPropertyMap["local:commits"]; ok {
				if priorLocalCommits, ok := localCommitsProperty.(map[string]interface{}); ok {
					for id, val := range priorLocalCommits {
						localCommits[id] = val
					}
				}
			}
		}
	}
	localCommits[string(revision)] = revisionDetails
	localCommitsProperty, err := json.Marshal(localCommits)
	if err != nil {
		return nil, err
	}
	if err := arc.setDiffProperty(createResponse.Response.ID, "local:commits", string(localCommitsProperty)); err != nil {
		return nil, err
	}

	return &createResponse.Response, nil
}
开发者ID:google,项目名称:git-phabricator-mirror,代码行数:70,代码来源:diff.go


注:本文中的github.com/google/git-appraise/repository.Repo.GetCommitDetails方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。