prow/config/jobs.go
func NewGitHubDeferredChangedFilesProvider(client githubClient, org, repo string, num int) ChangedFilesProvider {
	var changedFiles []string
	return func() ([]string, error) {
		// Fetch the changed files from github at most once.
		if changedFiles == nil {
			changes, err := client.GetPullRequestChanges(org, repo, num)
			if err != nil {
				return nil, fmt.Errorf("error getting pull request changes: %v", err)
			}
			for _, change := range changes {
				changedFiles = append(changedFiles, change.Filename)
			}
		}
		return changedFiles, nil
	}
}
func NewGitHubDeferredChangedFilesProvider(client githubClient, org, repo string, num int) ChangedFilesProvider {
	var changedFiles []string
	return func() ([]string, error) {
		// Fetch the changed files from github at most once.
		if changedFiles == nil {
			changes, err := client.GetPullRequestChanges(org, repo, num)
			if err != nil {
				return nil, fmt.Errorf("error getting pull request changes: %v", err)
			}
			for _, change := range changes {
				changedFiles = append(changedFiles, change.Filename)
			}
		}
		return changedFiles, nil
	}
}
func NewGitHubDeferredChangedFilesProvider ( client githubClient , org , repo string , num int ) ChangedFilesProvider { var changedFiles [ ] string return func ( ) ( [ ] string , error ) { // Fetch the changed files from github at most once. if changedFiles == nil { changes , err := client . GetPullRequestChanges ( org , repo , num ) if err != nil { return nil , fmt . Errorf ( " " , err ) } for _ , change := range changes { changedFiles = append ( changedFiles , change . Filename ) } } return changedFiles , nil } }
// NewGitHubDeferredChangedFilesProvider uses a closure to lazily retrieve the file changes only if they are needed.
// We only have to fetch the changes if there is at least one RunIfChanged job that is not being force run (due to
// a `/retest` after a failure or because it is explicitly triggered with `/test foo`).
NewGitHubDeferredChangedFilesProvider uses a closure to lazily retrieve the file changes only if they are needed . We only have to fetch the changes if there is at least one RunIfChanged job that is not being force run ( due to a / retest after a failure or because it is explicitly triggered with / test foo ) .