Skip to content

Commit a9f9fb3

Browse files
kostorrteo
authored andcommitted
[repos] Fix revisions not populated
1 parent e0b26fe commit a9f9fb3

File tree

2 files changed

+24
-19
lines changed

2 files changed

+24
-19
lines changed

core/repos/repo.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,13 +198,16 @@ func (r *Repo) refresh() error {
198198
return errors.New(err.Error() + ": " + r.GetIdentifier() + " | revision: " + r.Revision)
199199
}
200200

201-
// git updates, gather revisions and update template cache
202-
if err != git.NoErrAlreadyUpToDate || len(templatesCache) == 0 {
203-
err = r.gatherRevisions()
201+
// gather revisions on update or if empty
202+
if err != git.NoErrAlreadyUpToDate || r.Revisions == nil {
203+
err = r.gatherRevisions(ref)
204204
if err != nil {
205205
return err
206206
}
207+
}
207208

209+
// populate workflows on update or if empty
210+
if err != git.NoErrAlreadyUpToDate || len(templatesCache) == 0 {
208211
err = r.populateWorkflows(r.getDefaultRevision(), true)
209212
if err != nil {
210213
return err
@@ -214,11 +217,14 @@ func (r *Repo) refresh() error {
214217
return nil
215218
}
216219

217-
func (r *Repo) gatherRevisions() error {
220+
func (r *Repo) gatherRevisions(ref *git.Repository) error {
218221

219-
ref, err := git.PlainOpen(r.getCloneDir())
220-
if err != nil {
221-
return errors.New(err.Error() + ": " + r.GetIdentifier())
222+
var err error
223+
if ref == nil {
224+
ref, err = git.PlainOpen(r.getCloneDir())
225+
if err != nil {
226+
return errors.New(err.Error() + ": " + r.GetIdentifier())
227+
}
222228
}
223229

224230
var revs []string

core/repos/repomanager.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -259,18 +259,17 @@ func (manager *RepoManager) AddRepo(repoPath string, defaultRevision string) (st
259259
NoCheckout: true,
260260
})
261261

262-
if err != nil {
263-
if err == git.ErrRepositoryAlreadyExists {
264-
// This was an existing repo, so let's make sure it's up to date
265-
err = repo.refresh()
266-
if err != nil {
267-
return "", false, err
268-
}
269-
} else {
270-
cleanErr := cleanCloneParentDirs(repo.getCloneParentDirs())
271-
if cleanErr != nil {
272-
return "", false, errors.New(err.Error() + " Failed to clean directories: " + cleanErr.Error())
273-
}
262+
if err != nil && err != git.ErrRepositoryAlreadyExists{
263+
// Something went wrong, clean up
264+
cleanErr := cleanCloneParentDirs(repo.getCloneParentDirs())
265+
if cleanErr != nil {
266+
return "", false, errors.New(err.Error() + " Failed to clean directories: " + cleanErr.Error())
267+
}
268+
return "", false, err
269+
} else {
270+
// Make sure the repo is up to date and its structs are populated
271+
err = repo.refresh()
272+
if err != nil {
274273
return "", false, err
275274
}
276275
}

0 commit comments

Comments
 (0)