7

I'm very new to golang Im trying to do a git pull from go program. I have looked in to native libraries and found https://github.com/src-d/go-git/.

I has features to of cloning ect. but not pulling. Looking at the source it seems there is a function for pulling as well

func (r *Repository) Pull(o *PullOptions) 

However compiler warns that its undefined. Can anyone point me how can I do this or to an alternative library which supports both clone and pull ?

Sajith Silva
  • 823
  • 1
  • 13
  • 24

2 Answers2

14

You should create a Repository struct by cloning a repo:

import {
  git "gopkg.in/src-d/go-git.v4"
}

repo, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
    URL: "https://github.com/src-d/go-siva",
})

And then on the repo struct call Pull.

err := repo.Pull(&git.PullOptions{
    RemoteName: "origin"
})

You cannot call git.Pull directly.

Riyafa Abdul Hameed
  • 7,417
  • 6
  • 40
  • 55
Alex Efimov
  • 3,335
  • 1
  • 24
  • 29
4

gopkg.in/src-d/go-git.v4 is no longer maintained recommended to use github.com/go-git/go-git instead. Refer - https://pkg.go.dev/github.com/go-git/go-git

Sample code

import "github.com/go-git/go-git/v5"

_, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{
    URL:      "https://github.com/go-git/go-git",
    Progress: os.Stdout,
})
Dinu Mathai
  • 471
  • 6
  • 7