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
}