--- a/scripts/refresh-last-commits.py
+++ b/scripts/refresh-last-commits.py
@@ -8,10 +8,11 @@
import faulthandler
from pylons import c
-from ming.orm import ThreadLocalORMSession
+from ming.orm import ThreadLocalORMSession, session
from allura import model as M
from allura.lib.utils import chunked_find, chunked_list
+from allura.tasks.repo_tasks import refresh
log = logging.getLogger(__name__)
@@ -50,20 +51,22 @@
c.app.repo.tool.lower())
continue
- ci_ids = list(reversed(list(c.app.repo.all_commit_ids())))
- if options.clean:
- if options.diffs:
- # delete DiffInfoDocs
- i = M.repo.DiffInfoDoc.m.find(dict(commit_ids={'$in': ci_ids})).count()
- log.info("Deleting %i DiffInfoDoc docs, by repo id...", i)
+ c.app.repo.status = 'analyzing'
+ session(c.app.repo).flush(c.app.repo)
+ try:
+ ci_ids = list(reversed(list(c.app.repo.all_commit_ids())))
+ if options.clean:
+ if options.diffs:
+ # delete DiffInfoDocs
+ i = M.repo.DiffInfoDoc.m.find(dict(commit_ids={'$in': ci_ids})).count()
+ log.info("Deleting %i DiffInfoDoc docs, by repo id...", i)
+ M.repo.LastCommitDoc.m.remove(dict(commit_ids={'$in': ci_ids}))
+
+ # delete LastCommitDocs
+ i = M.repo.LastCommitDoc.m.find(dict(commit_ids={'$in': ci_ids})).count()
+ log.info("Deleting %i LastCommitDoc docs, by repo id...", i)
M.repo.LastCommitDoc.m.remove(dict(commit_ids={'$in': ci_ids}))
- # delete LastCommitDocs
- i = M.repo.LastCommitDoc.m.find(dict(commit_ids={'$in': ci_ids})).count()
- log.info("Deleting %i LastCommitDoc docs, by repo id...", i)
- M.repo.LastCommitDoc.m.remove(dict(commit_ids={'$in': ci_ids}))
-
- try:
log.info('Refreshing all last commits in %r', c.app.repo)
if options.profile:
import cProfile
@@ -71,9 +74,15 @@
globals(), locals(), '/tmp/refresh_lcds.profile')
else:
refresh_repo_lcds(ci_ids, options)
+ new_commit_ids = app.repo.unknown_commit_ids()
+ if len(new_commit_ids) > 0:
+ refresh.post()
except:
log.exception('Error refreshing %r', c.app.repo)
raise
+ finally:
+ c.app.repo.status = 'ready'
+ session(c.app.repo).flush(c.app.repo)
ThreadLocalORMSession.flush_all()
ThreadLocalORMSession.close_all()