| package git_test |
| |
| import ( |
| "fmt" |
| "io" |
| "io/ioutil" |
| "log" |
| "os" |
| "path/filepath" |
| |
| "gopkg.in/src-d/go-git.v4" |
| "gopkg.in/src-d/go-git.v4/config" |
| "gopkg.in/src-d/go-git.v4/plumbing" |
| "gopkg.in/src-d/go-git.v4/plumbing/transport/http" |
| "gopkg.in/src-d/go-git.v4/storage/memory" |
| |
| "gopkg.in/src-d/go-billy.v4/memfs" |
| ) |
| |
| func ExampleClone() { |
| // Filesystem abstraction based on memory |
| fs := memfs.New() |
| // Git objects storer based on memory |
| storer := memory.NewStorage() |
| |
| // Clones the repository into the worktree (fs) and storer all the .git |
| // content into the storer |
| _, err := git.Clone(storer, fs, &git.CloneOptions{ |
| URL: "https://github.com/git-fixtures/basic.git", |
| }) |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| // Prints the content of the CHANGELOG file from the cloned repository |
| changelog, err := fs.Open("CHANGELOG") |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| io.Copy(os.Stdout, changelog) |
| // Output: Initial changelog |
| } |
| |
| func ExamplePlainClone() { |
| // Tempdir to clone the repository |
| dir, err := ioutil.TempDir("", "clone-example") |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| defer os.RemoveAll(dir) // clean up |
| |
| // Clones the repository into the given dir, just as a normal git clone does |
| _, err = git.PlainClone(dir, false, &git.CloneOptions{ |
| URL: "https://github.com/git-fixtures/basic.git", |
| }) |
| |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| // Prints the content of the CHANGELOG file from the cloned repository |
| changelog, err := os.Open(filepath.Join(dir, "CHANGELOG")) |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| io.Copy(os.Stdout, changelog) |
| // Output: Initial changelog |
| } |
| |
| func ExamplePlainClone_usernamePassword() { |
| // Tempdir to clone the repository |
| dir, err := ioutil.TempDir("", "clone-example") |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| defer os.RemoveAll(dir) // clean up |
| |
| // Clones the repository into the given dir, just as a normal git clone does |
| _, err = git.PlainClone(dir, false, &git.CloneOptions{ |
| URL: "https://github.com/git-fixtures/basic.git", |
| Auth: &http.BasicAuth{ |
| Username: "username", |
| Password: "password", |
| }, |
| }) |
| |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func ExamplePlainClone_accessToken() { |
| // Tempdir to clone the repository |
| dir, err := ioutil.TempDir("", "clone-example") |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| defer os.RemoveAll(dir) // clean up |
| |
| // Clones the repository into the given dir, just as a normal git clone does |
| _, err = git.PlainClone(dir, false, &git.CloneOptions{ |
| URL: "https://github.com/git-fixtures/basic.git", |
| Auth: &http.BasicAuth{ |
| Username: "abc123", // anything except an empty string |
| Password: "github_access_token", |
| }, |
| }) |
| |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |
| |
| func ExampleRepository_References() { |
| r, _ := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{ |
| URL: "https://github.com/git-fixtures/basic.git", |
| }) |
| |
| // simulating a git show-ref |
| refs, _ := r.References() |
| refs.ForEach(func(ref *plumbing.Reference) error { |
| if ref.Type() == plumbing.HashReference { |
| fmt.Println(ref) |
| } |
| |
| return nil |
| }) |
| |
| // Example Output: |
| // 6ecf0ef2c2dffb796033e5a02219af86ec6584e5 refs/remotes/origin/master |
| // e8d3ffab552895c19b9fcf7aa264d277cde33881 refs/remotes/origin/branch |
| // 6ecf0ef2c2dffb796033e5a02219af86ec6584e5 refs/heads/master |
| |
| } |
| |
| func ExampleRepository_CreateRemote() { |
| r, _ := git.Init(memory.NewStorage(), nil) |
| |
| // Add a new remote, with the default fetch refspec |
| _, err := r.CreateRemote(&config.RemoteConfig{ |
| Name: "example", |
| URLs: []string{"https://github.com/git-fixtures/basic.git"}, |
| }) |
| |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| list, err := r.Remotes() |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| for _, r := range list { |
| fmt.Println(r) |
| } |
| |
| // Example Output: |
| // example https://github.com/git-fixtures/basic.git (fetch) |
| // example https://github.com/git-fixtures/basic.git (push) |
| } |