repository.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package test
  2. import (
  3. "io"
  4. "os"
  5. git "gopkg.in/src-d/go-git.v4"
  6. "gopkg.in/src-d/go-git.v4/plumbing"
  7. "gopkg.in/src-d/go-git.v4/plumbing/object"
  8. "gopkg.in/src-d/go-git.v4/storage/memory"
  9. )
  10. // Repository is a boilerplate sample repository (Hercules itself).
  11. var Repository *git.Repository
  12. // FakeChangeForName creates an artificial Git Change from a file name and two arbitrary hashes.
  13. func FakeChangeForName(name string, hashFrom string, hashTo string) *object.Change {
  14. return &object.Change{
  15. From: object.ChangeEntry{Name: name, TreeEntry: object.TreeEntry{
  16. Name: name, Hash: plumbing.NewHash(hashFrom),
  17. }},
  18. To: object.ChangeEntry{Name: name, TreeEntry: object.TreeEntry{
  19. Name: name, Hash: plumbing.NewHash(hashTo),
  20. }},
  21. }
  22. }
  23. func init() {
  24. cwd, err := os.Getwd()
  25. if err == nil {
  26. Repository, err = git.PlainOpen(cwd)
  27. if err == nil {
  28. iter, err := Repository.CommitObjects()
  29. if err == nil {
  30. commits := -1
  31. for ; err != io.EOF; _, err = iter.Next() {
  32. if err != nil {
  33. panic(err)
  34. }
  35. commits++
  36. if commits >= 100 {
  37. return
  38. }
  39. }
  40. }
  41. }
  42. }
  43. Repository, _ = git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
  44. URL: "https://github.com/src-d/hercules",
  45. })
  46. }