update source repository if worktree exists
1 file changed, 15 insertions(+), 12 deletions(-)
changed files
M internal/vcs/repository.go → internal/vcs/repository.go
@@ -23,10 +23,11 @@ repo *git.Repository log *log.Logger } -func CloneOrOpen(cfg *Options, log *log.Logger) (repo *Repository, err error) { +func CloneOrOpen(cfg *Options, log *log.Logger) (repo *Repository, err error, exists bool) { stat, err := os.Stat(cfg.LocalPath) - if err != nil && errors.Is(err, fs.ErrNotExist) { - return nil, err + exists = err == nil + if err != nil && !errors.Is(err, fs.ErrNotExist) { + return } repo = &Repository{ log: log,@@ -43,15 +44,8 @@ return } -func (r *Repository) Update() (bool, error) { - r.log.Info("updating repository") - - head, err := r.repo.Head() - if err != nil { - return false, err - } - - r.log.Info("updating from", "rev", head.Hash().String()) +func (r *Repository) Update() (updated bool, err error) { + r.log.Info("updating repository", "from", r.headSHA()) err = r.repo.Fetch(&git.FetchOptions{ Prune: true, })@@ -119,3 +113,12 @@ } return nil } + +func (r *Repository) headSHA() string { + head, err := r.repo.Head() + if err != nil { + return "" + } + + return head.Hash().String() +}