Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3da8eea

Browse files
committed
Extend CachedChangeset and modify CachedRepo for get_branches
Trac's CachedChangeset does not implement get_branches, which is required to show branch information on the timeline. This commit creates a CachedChangeset2 which GitPlugin's CachedRepository2 returns when asked for a changeset. The new class uses GitPlugin's internal rev_cache to speed up the branch information retrieval (shamelessly copied from GitChangeset.get_branches)
1 parent 5cbdfd9 commit 3da8eea

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

tracext/git/git_fs.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from trac.versioncontrol.api import \
2020
Changeset, Node, Repository, IRepositoryConnector, NoSuchChangeset, NoSuchNode
2121
from trac.wiki import IWikiSyntaxProvider
22-
from trac.versioncontrol.cache import CachedRepository
22+
from trac.versioncontrol.cache import CachedRepository, CachedChangeset
2323
from trac.versioncontrol.web_ui import IPropertyRenderer
2424
from trac.config import BoolOption, IntOption, PathOption, Option
2525
from trac.web.chrome import Chrome
@@ -46,7 +46,16 @@ def normalize_rev(self, rev):
4646
if normrev is None:
4747
raise NoSuchChangeset(rev)
4848
return normrev
49+
def get_changeset(self, rev):
50+
return CachedChangeset2(self, self.normalize_rev(rev), self.env)
51+
52+
class CachedChangeset2(CachedChangeset):
53+
def get_branches(self):
54+
_rev = self.rev
4955

56+
return [ (k, v == _rev) for k, v in
57+
self.repos.repos.git.get_branch_contains(_rev, resolve=True) ]
58+
5059

5160
def _last_iterable(iterable):
5261
"helper for detecting last iteration in for-loop"

0 commit comments

Comments
 (0)