fork of go-git with some jj specific features
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.7.1 78 lines 1.7 kB view raw
1package main 2 3import ( 4 "fmt" 5 6 "gopkg.in/src-d/go-git.v4" 7 . "gopkg.in/src-d/go-git.v4/_examples" 8 "gopkg.in/src-d/go-git.v4/config" 9 "gopkg.in/src-d/go-git.v4/plumbing" 10 "gopkg.in/src-d/go-git.v4/storage/memory" 11) 12 13// Example of how to: 14// - Create a new in-memory repository 15// - Create a new remote named "example" 16// - List remotes and print them 17// - Pull using the new remote "example" 18// - Iterate the references again, but only showing hash references, not symbolic ones 19// - Remove remote "example" 20func main() { 21 // Create a new repository 22 Info("git init") 23 r, err := git.Init(memory.NewStorage(), nil) 24 CheckIfError(err) 25 26 // Add a new remote, with the default fetch refspec 27 Info("git remote add example https://github.com/git-fixtures/basic.git") 28 _, err = r.CreateRemote(&config.RemoteConfig{ 29 Name: "example", 30 URLs: []string{"https://github.com/git-fixtures/basic.git"}, 31 }) 32 33 CheckIfError(err) 34 35 // List remotes from a repository 36 Info("git remotes -v") 37 38 list, err := r.Remotes() 39 CheckIfError(err) 40 41 for _, r := range list { 42 fmt.Println(r) 43 } 44 45 // Fetch using the new remote 46 Info("git fetch example") 47 err = r.Fetch(&git.FetchOptions{ 48 RemoteName: "example", 49 }) 50 51 CheckIfError(err) 52 53 // List the branches 54 // > git show-ref 55 Info("git show-ref") 56 57 refs, err := r.References() 58 CheckIfError(err) 59 60 err = refs.ForEach(func(ref *plumbing.Reference) error { 61 // The HEAD is omitted in a `git show-ref` so we ignore the symbolic 62 // references, the HEAD 63 if ref.Type() == plumbing.SymbolicReference { 64 return nil 65 } 66 67 fmt.Println(ref) 68 return nil 69 }) 70 71 CheckIfError(err) 72 73 // Delete the example remote 74 Info("git remote rm example") 75 76 err = r.DeleteRemote("example") 77 CheckIfError(err) 78}