func()

in internal/mode/advanced/git/gitaly.go [335:374]


func (gc *gitalyClient) EachCommit(f CommitFunc) error {
	request := &pb.ListCommitsRequest{
		Repository: gc.repository,
		Revisions: []string{
			"^" + gc.FromHash,
			gc.ToHash,
		},
		Reverse: true,
	}

	stream, err := gc.commitServiceClient.ListCommits(gc.ctx, request)
	if err != nil {
		return fmt.Errorf("could not call rpc.ListCommits: %w", err)
	}

	for {
		c, err := stream.Recv()
		if errors.Is(err, io.EOF) {
			break
		}
		if err != nil {
			return fmt.Errorf("error calling rpc.ListCommits: %w", err)
		}
		for _, cmt := range c.Commits {
			commit := &Commit{
				Message:   string(cmt.Body),
				Hash:      string(cmt.Id),
				Author:    gitalyBuildSignature(cmt.Author),
				Committer: gitalyBuildSignature(cmt.Committer),
			}

			logkit.WithField("commitID", cmt.Id).Debug("Indexing commit")

			if err := f(commit); err != nil {
				return err
			}
		}
	}
	return nil
}