Ticket #1271: limited-sync.diff
| File limited-sync.diff, 2.9 KB (added by Manuzhai, 3 years ago) |
|---|
-
cache.py
42 42 return CachedChangeset(self.repos.normalize_rev(rev), self.db, 43 43 self.authz) 44 44 45 def sync(self ):45 def sync(self, first = None, last = None): 46 46 self.log.debug("Checking whether sync with repository is needed") 47 47 cursor = self.db.cursor() 48 48 … … 59 59 "a 'trac-admin resync' operation is needed.") 60 60 61 61 youngest_stored = self.repos.get_youngest_rev_in_cache(self.db) 62 63 if youngest_stored != str(self.repos.youngest_rev): 62 if youngest_stored != str(self.repos.youngest_rev) or first or last: 64 63 authz = self.repos.authz 65 64 self.repos.authz = Authorizer() # remove permission checking 66 65 67 66 kindmap = dict(zip(_kindmap.values(), _kindmap.keys())) 68 67 actionmap = dict(zip(_actionmap.values(), _actionmap.keys())) 69 self.log.info("Syncing with repository (%s to %s)" 70 % (youngest_stored, self.repos.youngest_rev)) 71 if youngest_stored: 72 current_rev = self.repos.next_rev(youngest_stored) 68 69 if first == None and not youngest_stored: 70 first = self.repos.oldest_rev 71 elif first == None or self.rev_older_than(youngest_stored, first): 72 first = self.repos.next_rev(youngest_stored) 73 73 else: 74 current_rev = self.repos.oldest_rev 75 while current_rev is not None: 74 first = self.normalize_rev(first) 75 76 if last == None: 77 last = self.repos.youngest_rev 78 else: 79 last = self.normalize_rev(last) 80 81 self.log.info("Syncing with repository (%s to %s)" % (first, last)) 82 83 current_rev = first 84 while current_rev is not None or self.repos.rev_older_than(last, current_rev): 76 85 changeset = self.repos.get_changeset(current_rev) 77 cursor.execute("INSERT INTO revision (rev,time,author,message)"78 " VALUES (%s,%s,%s,%s)", (str(current_rev),79 changeset.date, changeset.author,80 changeset.message))86 cursor.execute("INSERT OR REPLACE INTO revision (rev, time, " 87 "author, message) VALUES (%s,%s,%s,%s)", 88 (str(current_rev), changeset.date, 89 changeset.author, changeset.message)) 81 90 for path,kind,action,base_path,base_rev in changeset.get_changes(): 82 91 self.log.debug("Caching node change in [%s]: %s" 83 92 % (current_rev, (path, kind, action,
