// SkpCommits returns the indices for all the commits that contain SKP updates. func (g *GitInfo) SkpCommits(tile *tiling.Tile) ([]int, error) { // Executes a git log command that looks like: // // git log --format=format:%H 32956400b4d8f33394e2cdef9b66e8369ba2a0f3..e7416bfc9858bde8fc6eb5f3bfc942bc3350953a SKP_VERSION // // The output should be a \n separated list of hashes that match. first, last := tile.CommitRange() output, err := exec.RunCwd(g.dir, "git", "log", "--format=format:%H", first+".."+last, "SKP_VERSION") if err != nil { return nil, fmt.Errorf("SkpCommits: Failed to find git log of SKP_VERSION: %s", err) } hashes := strings.Split(output, "\n") ret := []int{} for i, c := range tile.Commits { if c.CommitTime != 0 && util.In(c.Hash, hashes) { ret = append(ret, i) } } return ret, nil }