Ticket #4132: sync_only_once-r4292.diff
| File sync_only_once-r4292.diff, 2.4 KB (added by cboos, 5 years ago) |
|---|
-
trac/versioncontrol/api.py
24 24 from trac.config import Option 25 25 from trac.core import * 26 26 from trac.perm import PermissionError 27 from trac.web.api import IRequestFilter 27 28 28 29 29 30 class IRepositoryConnector(Interface): … … 50 51 It provides easy access to the configured implementation. 51 52 """ 52 53 54 implements(IRequestFilter) 55 53 56 connectors = ExtensionPoint(IRepositoryConnector) 54 57 55 58 repository_type = Option('trac', 'repository_type', 'svn', … … 62 65 self._lock = threading.Lock() 63 66 self._connector = None 64 67 68 # IRequestFilter methods 69 70 def pre_process_request(self, req, handler): 71 from trac.web.chrome import Chrome 72 if handler is not Chrome(self.env): 73 repos = self.get_repository(req.authname) 74 if hasattr(repos, 'sync'): 75 repos.sync() 76 return handler 77 78 def post_process_request(self, req, template, content_type): 79 return (template, content_type) 80 81 65 82 # Public API methods 66 83 67 84 def get_repository(self, authname): -
trac/versioncontrol/cache.py
34 34 Repository.__init__(self, repos.name, authz, log) 35 35 self.db = db 36 36 self.repos = repos 37 self.synced = 038 37 39 38 def close(self): 40 39 self.repos.close() 41 40 42 41 def get_changeset(self, rev): 43 if not self.synced:44 self.sync()45 self.synced = 146 42 return CachedChangeset(self.repos, self.repos.normalize_rev(rev), 47 43 self.db, self.authz) 48 44 49 45 def get_changesets(self, start, stop): 50 if not self.synced:51 self.sync()52 self.synced = 153 46 cursor = self.db.cursor() 54 47 cursor.execute("SELECT rev FROM revision " 55 48 "WHERE time >= %s AND time < %s " … … 123 116 return self.repos.oldest_rev 124 117 125 118 def get_youngest_rev(self): 126 return self.repos. youngest_rev119 return self.repos.get_youngest_rev_in_cache(self.db) 127 120 128 121 def previous_rev(self, rev): 129 122 return self.repos.previous_rev(rev)
