func()

in pkg/client/git/client.go [199:232]


func (c *Client) Push(projectName, remote string, refSpecs ...string) (pushOutput string, retErr error) {
	projectPath := c.projectPath(projectName)

	r, err := git.PlainOpen(projectPath)
	if err != nil {
		return "", errors.Wrap(err, "")
	}

	unsecureRemoteName := fmt.Sprintf("unsecure_%s", remote)

	_, err = c.createRemoteWithCredential(r, remote, unsecureRemoteName)
	if err != nil {
		return "", errors.Wrap(err, "unable to create new remote")
	}

	defer func() {
		if err = r.DeleteRemote(unsecureRemoteName); err != nil {
			retErr = errors.Wrap(err, "unable to delete tmp remote")
		}
	}()

	pushArgs := []string{"push", unsecureRemoteName}
	pushArgs = append(pushArgs, refSpecs...)

	cmd := exec.Command("git", pushArgs...)
	cmd.Dir = projectPath

	bts, err := cmd.CombinedOutput()
	if err != nil {
		return "", errors.Wrap(err, string(bts))
	}

	return string(bts), nil
}