// revisionChanges commits changes identified by the given manifest // file and label to the manifest repository and (if applicable) // pushes these changes to the remote repository. func revisionChanges(ctx *tool.Context, snapshotDir, snapshotFile, label string) (e error) { cwd, err := os.Getwd() if err != nil { return err } defer collect.Error(func() error { return ctx.Run().Chdir(cwd) }, &e) if err := ctx.Run().Chdir(snapshotDir); err != nil { return err } relativeSnapshotPath := strings.TrimPrefix(snapshotFile, snapshotDir+string(os.PathSeparator)) if err := ctx.Git().Add(relativeSnapshotPath); err != nil { return err } if err := ctx.Git().Add(label); err != nil { return err } name := strings.TrimPrefix(snapshotFile, snapshotDir) if err := ctx.Git().CommitWithMessage(fmt.Sprintf("adding snapshot %q for label %q", name, label)); err != nil { return err } if remoteFlag { if err := ctx.Git().Push("origin", "master", gitutil.VerifyOpt(false)); err != nil { return err } } return nil }
// commitAndPushChanges commits changes identified by the given manifest file // and label to the containing repository and pushes these changes to the // remote repository. func commitAndPushChanges(jirix *jiri.X, snapshotDir, snapshotFile, label string) (e error) { cwd, err := os.Getwd() if err != nil { return err } defer collect.Error(func() error { return jirix.NewSeq().Chdir(cwd).Done() }, &e) if err := jirix.NewSeq().Chdir(snapshotDir).Done(); err != nil { return err } relativeSnapshotPath := strings.TrimPrefix(snapshotFile, snapshotDir+string(os.PathSeparator)) git := gitutil.New(jirix.NewSeq()) // Pull from master so we are up-to-date. if err := git.Pull("origin", "master"); err != nil { return err } if err := git.Add(relativeSnapshotPath); err != nil { return err } if err := git.Add(label); err != nil { return err } name := strings.TrimPrefix(snapshotFile, snapshotDir) if err := git.CommitNoVerify(fmt.Sprintf("adding snapshot %q for label %q", name, label)); err != nil { return err } if err := git.Push("origin", "master", gitutil.VerifyOpt(false)); err != nil { return err } return nil }