Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Side by Side Diff: go/gitinfo/gitinfo.go

Issue 777413002: Add new tests to presubmit, fix errors (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: rebase Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ct/go/util/util_test.go ('k') | go/gitinfo/gitinfo_test.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // gitinfo enables querying info from a Git repository. 1 // gitinfo enables querying info from a Git repository.
2 package gitinfo 2 package gitinfo
3 3
4 import ( 4 import (
5 "fmt" 5 "fmt"
6 "os" 6 "os"
7 "os/exec" 7 "os/exec"
8 "path" 8 "path"
9 "regexp" 9 "regexp"
10 "sort" 10 "sort"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 // commit b7988a21fdf23cc4ace6145a06ea824aa85db099 168 // commit b7988a21fdf23cc4ace6145a06ea824aa85db099
169 // Author: Joe Gregorio <jcgregorio@google.com> 169 // Author: Joe Gregorio <jcgregorio@google.com>
170 // Date: Tue Aug 5 16:19:48 2014 -0400 170 // Date: Tue Aug 5 16:19:48 2014 -0400
171 // 171 //
172 // A description of the commit. 172 // A description of the commit.
173 // 173 //
174 // perf/go/skiaperf/perf.go 174 // perf/go/skiaperf/perf.go
175 // perf/go/types/types.go 175 // perf/go/types/types.go
176 // perf/res/js/logic.js 176 // perf/res/js/logic.js
177 // 177 //
178 func (g GitInfo) Log(begin, end string) (string, error) { 178 func (g *GitInfo) Log(begin, end string) (string, error) {
179 command := []string{"log", "--name-only"} 179 command := []string{"log", "--name-only"}
180 hashrange := begin 180 hashrange := begin
181 if end != "" { 181 if end != "" {
182 hashrange += ".." + end 182 hashrange += ".." + end
183 command = append(command, hashrange) 183 command = append(command, hashrange)
184 } else { 184 } else {
185 command = append(command, "-n", "1", hashrange) 185 command = append(command, "-n", "1", hashrange)
186 } 186 }
187 cmd := exec.Command("git", command...) 187 cmd := exec.Command("git", command...)
188 cmd.Dir = g.dir 188 cmd.Dir = g.dir
189 b, err := cmd.Output() 189 b, err := cmd.Output()
190 if err != nil { 190 if err != nil {
191 return "", err 191 return "", err
192 } 192 }
193 return string(b), nil 193 return string(b), nil
194 } 194 }
195 195
196 // FullHash gives the full commit hash for the given ref. 196 // FullHash gives the full commit hash for the given ref.
197 func (g GitInfo) FullHash(ref string) (string, error) { 197 func (g *GitInfo) FullHash(ref string) (string, error) {
198 cmd := exec.Command("git", "rev-parse", ref) 198 cmd := exec.Command("git", "rev-parse", ref)
199 cmd.Dir = g.dir 199 cmd.Dir = g.dir
200 b, err := cmd.Output() 200 b, err := cmd.Output()
201 if err != nil { 201 if err != nil {
202 return "", err 202 return "", err
203 } 203 }
204 return string(b), nil 204 return string(b), nil
205 } 205 }
206 206
207 // GetFile returns the contents of the given file at the given commit. 207 // GetFile returns the contents of the given file at the given commit.
208 func (g GitInfo) GetFile(fileName, commit string) (string, error) { 208 func (g *GitInfo) GetFile(fileName, commit string) (string, error) {
209 cmd := exec.Command("git", "show", commit+":"+fileName) 209 cmd := exec.Command("git", "show", commit+":"+fileName)
210 cmd.Dir = g.dir 210 cmd.Dir = g.dir
211 b, err := cmd.Output() 211 b, err := cmd.Output()
212 if err != nil { 212 if err != nil {
213 return "", err 213 return "", err
214 } 214 }
215 return string(b), nil 215 return string(b), nil
216 } 216 }
217 217
218 // InitalCommit returns the hash of the initial commit. 218 // InitalCommit returns the hash of the initial commit.
219 func (g GitInfo) InitialCommit() (string, error) { 219 func (g *GitInfo) InitialCommit() (string, error) {
220 cmd := exec.Command("git", "rev-list", "--max-parents=0", "HEAD") 220 cmd := exec.Command("git", "rev-list", "--max-parents=0", "HEAD")
221 cmd.Dir = g.dir 221 cmd.Dir = g.dir
222 b, err := cmd.Output() 222 b, err := cmd.Output()
223 if err != nil { 223 if err != nil {
224 return "", fmt.Errorf("Failed to determine initial commit: %v", err) 224 return "", fmt.Errorf("Failed to determine initial commit: %v", err)
225 } 225 }
226 return strings.Trim(string(b), "\n"), nil 226 return strings.Trim(string(b), "\n"), nil
227 } 227 }
228 228
229 // GetBranches returns a slice of strings naming the branches in the repo. 229 // GetBranches returns a slice of strings naming the branches in the repo.
230 func (g GitInfo) GetBranches() ([]*GitBranch, error) { 230 func (g *GitInfo) GetBranches() ([]*GitBranch, error) {
231 return GetBranches(g.dir) 231 return GetBranches(g.dir)
232 } 232 }
233 233
234 // ShortCommits stores a slice of ShortCommit struct. 234 // ShortCommits stores a slice of ShortCommit struct.
235 type ShortCommits struct { 235 type ShortCommits struct {
236 Commits []*ShortCommit 236 Commits []*ShortCommit
237 } 237 }
238 238
239 // ShortList returns a slice of ShortCommit for every commit in (begin, end]. 239 // ShortList returns a slice of ShortCommit for every commit in (begin, end].
240 func (g *GitInfo) ShortList(begin, end string) (*ShortCommits, error) { 240 func (g *GitInfo) ShortList(begin, end string) (*ShortCommits, error) {
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 } 369 }
370 sort.Sort(gitHashSlice(gitHashes)) 370 sort.Sort(gitHashSlice(gitHashes))
371 hashes := make([]string, len(timestamps), len(timestamps)) 371 hashes := make([]string, len(timestamps), len(timestamps))
372 for i, h := range gitHashes { 372 for i, h := range gitHashes {
373 hashes[i] = h.hash 373 hashes[i] = h.hash
374 } 374 }
375 return hashes, timestamps, nil 375 return hashes, timestamps, nil
376 } 376 }
377 377
378 // SkpCommits returns the indices for all the commits that contain SKP updates. 378 // SkpCommits returns the indices for all the commits that contain SKP updates.
379 func (g GitInfo) SkpCommits(tile *types.Tile) ([]int, error) { 379 func (g *GitInfo) SkpCommits(tile *types.Tile) ([]int, error) {
380 // Executes a git log command that looks like: 380 // Executes a git log command that looks like:
381 // 381 //
382 // git log --format=format:%H 32956400b4d8f33394e2cdef9b66e8369ba2a0f 3..e7416bfc9858bde8fc6eb5f3bfc942bc3350953a SKP_VERSION 382 // git log --format=format:%H 32956400b4d8f33394e2cdef9b66e8369ba2a0f 3..e7416bfc9858bde8fc6eb5f3bfc942bc3350953a SKP_VERSION
383 // 383 //
384 // The output should be a \n separated list of hashes that match. 384 // The output should be a \n separated list of hashes that match.
385 first, last := tile.CommitRange() 385 first, last := tile.CommitRange()
386 cmd := exec.Command("git", "log", "--format=format:%H", first+".."+last, "SKP_VERSION") 386 cmd := exec.Command("git", "log", "--format=format:%H", first+".."+last, "SKP_VERSION")
387 cmd.Dir = g.dir 387 cmd.Dir = g.dir
388 b, err := cmd.Output() 388 b, err := cmd.Output()
389 if err != nil { 389 if err != nil {
390 glog.Error(string(b)) 390 glog.Error(string(b))
391 return nil, err 391 return nil, err
392 } 392 }
393 hashes := strings.Split(string(b), "\n") 393 hashes := strings.Split(string(b), "\n")
394 394
395 ret := []int{} 395 ret := []int{}
396 for i, c := range tile.Commits { 396 for i, c := range tile.Commits {
397 if c.CommitTime != 0 && util.In(c.Hash, hashes) { 397 if c.CommitTime != 0 && util.In(c.Hash, hashes) {
398 ret = append(ret, i) 398 ret = append(ret, i)
399 } 399 }
400 } 400 }
401 return ret, nil 401 return ret, nil
402 } 402 }
403 403
404 // LastSkpCommit returns the time of the last change to the SKP_VERSION file. 404 // LastSkpCommit returns the time of the last change to the SKP_VERSION file.
405 func (g GitInfo) LastSkpCommit() (time.Time, error) { 405 func (g *GitInfo) LastSkpCommit() (time.Time, error) {
406 // Executes a git log command that looks like: 406 // Executes a git log command that looks like:
407 // 407 //
408 // git log --format=format:%ct -n 1 SKP_VERSION 408 // git log --format=format:%ct -n 1 SKP_VERSION
409 // 409 //
410 // The output should be a single unix timestamp. 410 // The output should be a single unix timestamp.
411 cmd := exec.Command("git", "log", "--format=format:%ct", "-n", "1", "SKP _VERSION") 411 cmd := exec.Command("git", "log", "--format=format:%ct", "-n", "1", "SKP _VERSION")
412 cmd.Dir = g.dir 412 cmd.Dir = g.dir
413 b, err := cmd.Output() 413 b, err := cmd.Output()
414 if err != nil { 414 if err != nil {
415 glog.Error("Failed to read git log: ", err) 415 glog.Error("Failed to read git log: ", err)
(...skipping 25 matching lines...) Expand all
441 } 441 }
442 return -1, -1, fmt.Errorf("Cannot find hash %s.\n", hash) 442 return -1, -1, fmt.Errorf("Cannot find hash %s.\n", hash)
443 } 443 }
444 444
445 // NumCommits returns the number of commits in the repo. 445 // NumCommits returns the number of commits in the repo.
446 func (g *GitInfo) NumCommits() int { 446 func (g *GitInfo) NumCommits() int {
447 g.mutex.Lock() 447 g.mutex.Lock()
448 defer g.mutex.Unlock() 448 defer g.mutex.Unlock()
449 return len(g.hashes) 449 return len(g.hashes)
450 } 450 }
OLDNEW
« no previous file with comments | « ct/go/util/util_test.go ('k') | go/gitinfo/gitinfo_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698