prow/pod-utils/clone/clone.go
func Run(refs prowapi.Refs, dir, gitUserName, gitUserEmail, cookiePath string, env []string) Record {
	logrus.WithFields(logrus.Fields{"refs": refs}).Info("Cloning refs")
	record := Record{Refs: refs}

	// This function runs the provided commands in order, logging them as they run,
	// aborting early and returning if any command fails.
	runCommands := func(commands []cloneCommand) error {
		for _, command := range commands {
			formattedCommand, output, err := command.run()
			logrus.WithFields(logrus.Fields{"command": formattedCommand, "output": output, "error": err}).Info("Ran command")
			message := ""
			if err != nil {
				message = err.Error()
				record.Failed = true
			}
			record.Commands = append(record.Commands, Command{Command: formattedCommand, Output: output, Error: message})
			if err != nil {
				return err
			}
		}
		return nil
	}

	g := gitCtxForRefs(refs, dir, env)
	if err := runCommands(g.commandsForBaseRef(refs, gitUserName, gitUserEmail, cookiePath)); err != nil {
		return record
	}

	timestamp, err := g.gitHeadTimestamp()
	if err != nil {
		timestamp = int(time.Now().Unix())
	}
	if err := runCommands(g.commandsForPullRefs(refs, timestamp)); err != nil {
		return record
	}

	finalSHA, err := g.gitRevParse()
	if err != nil {
		logrus.WithError(err).Warnf("Cannot resolve finalSHA for ref %#v", refs)
	} else {
		record.FinalSHA = finalSHA
	}

	return record
}
func Run(refs prowapi.Refs, dir, gitUserName, gitUserEmail, cookiePath string, env []string) Record {
	logrus.WithFields(logrus.Fields{"refs": refs}).Info("Cloning refs")
	record := Record{Refs: refs}

	// This function runs the provided commands in order, logging them as they run,
	// aborting early and returning if any command fails.
	runCommands := func(commands []cloneCommand) error {
		for _, command := range commands {
			formattedCommand, output, err := command.run()
			logrus.WithFields(logrus.Fields{"command": formattedCommand, "output": output, "error": err}).Info("Ran command")
			message := ""
			if err != nil {
				message = err.Error()
				record.Failed = true
			}
			record.Commands = append(record.Commands, Command{Command: formattedCommand, Output: output, Error: message})
			if err != nil {
				return err
			}
		}
		return nil
	}

	g := gitCtxForRefs(refs, dir, env)
	if err := runCommands(g.commandsForBaseRef(refs, gitUserName, gitUserEmail, cookiePath)); err != nil {
		return record
	}

	timestamp, err := g.gitHeadTimestamp()
	if err != nil {
		timestamp = int(time.Now().Unix())
	}
	if err := runCommands(g.commandsForPullRefs(refs, timestamp)); err != nil {
		return record
	}

	finalSHA, err := g.gitRevParse()
	if err != nil {
		logrus.WithError(err).Warnf("Cannot resolve finalSHA for ref %#v", refs)
	} else {
		record.FinalSHA = finalSHA
	}

	return record
}
func Run ( refs prowapi . Refs , dir , gitUserName , gitUserEmail , cookiePath string , env [ ] string ) Record { logrus . WithFields ( logrus . Fields { " " : refs } ) . Info ( " " ) record := Record { Refs : refs } // This function runs the provided commands in order, logging them as they run, // aborting early and returning if any command fails. runCommands := func ( commands [ ] cloneCommand ) error { for _ , command := range commands { formattedCommand , output , err := command . run ( ) logrus . WithFields ( logrus . Fields { " " : formattedCommand , " " : output , " " : err } ) . Info ( " " ) message := " " if err != nil { message = err . Error ( ) record . Failed = true } record . Commands = append ( record . Commands , Command { Command : formattedCommand , Output : output , Error : message } ) if err != nil { return err } } return nil } g := gitCtxForRefs ( refs , dir , env ) if err := runCommands ( g . commandsForBaseRef ( refs , gitUserName , gitUserEmail , cookiePath ) ) ; err != nil { return record } timestamp , err := g . gitHeadTimestamp ( ) if err != nil { timestamp = int ( time . Now ( ) . Unix ( ) ) } if err := runCommands ( g . commandsForPullRefs ( refs , timestamp ) ) ; err != nil { return record } finalSHA , err := g . gitRevParse ( ) if err != nil { logrus . WithError ( err ) . Warnf ( " " , refs ) } else { record . FinalSHA = finalSHA } return record }
// Run clones the refs under the prescribed directory and optionally
// configures the git username and email in the repository as well.
Run clones the refs under the prescribed directory and optionally configures the git username and email in the repository as well .