all repos — homestead @ 234ca2264f244f8b8c652ff8a38c2715f5e0a43d

Code for my website

fix repository not updating

Alan Pearce
commit

234ca2264f244f8b8c652ff8a38c2715f5e0a43d

parent

bbc641c1421d8f0f49b16512d4c6c7e27c89f697

1 file changed, 23 insertions(+), 15 deletions(-)

jump to
M internal/vcs/repository.gointernal/vcs/repository.go
@@ -6,8 +6,6 @@ "website/internal/config"
"website/internal/log" "github.com/go-git/go-git/v5" - gitc "github.com/go-git/go-git/v5/config" - "github.com/go-git/go-git/v5/plumbing" "github.com/pkg/errors" )
@@ -52,26 +50,36 @@ }
func (r *Repository) Update(cfg *Config) (bool, error) { log.Info("updating repository") - err := r.repo.Fetch(&git.FetchOptions{ - RefSpecs: []gitc.RefSpec{ - gitc.RefSpec( - "+refs/heads/" + cfg.Branch + ":refs/remotes/origin/" + cfg.Branch, - ), - }, - }) - if err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) { + + head, err := r.repo.Head() + if err != nil { return false, err } - ref, err := r.repo.Reference(plumbing.ReferenceName("refs/remotes/origin/"+cfg.Branch), true) + log.Info("updating from", "rev", head.Hash().String()) + wt, err := r.repo.Worktree() if err != nil { return false, err } - - log.Info("applying changes", "hash", ref.Hash().String()) - err = r.repo.Merge(*ref, git.MergeOptions{ - Strategy: git.FastForwardMerge, + err = wt.Pull(&git.PullOptions{ + SingleBranch: true, + Force: true, }) + if err != nil { + if errors.Is(err, git.NoErrAlreadyUpToDate) { + log.Info("already up-to-date") + + return true, nil + } + + return false, err + } + + head, err = r.repo.Head() + if err != nil { + return false, err + } + log.Info("updated to", "rev", head.Hash().String()) return true, nil }