Changeset 4425
- Timestamp:
- 10/08/08 13:14:15 (3 months ago)
- Files:
-
- repositoryhooksystemplugin/0.11/repository_hook_system/interface.py (modified) (1 diff)
- repositoryhooksystemplugin/0.11/repository_hook_system/listener.py (modified) (1 diff)
- repositoryhooksystemplugin/0.11/repository_hook_system/README (added)
- repositoryhooksystemplugin/0.11/repository_hook_system/svnhooksystem.py (modified) (2 diffs)
- repositoryhooksystemplugin/0.11/repository_hook_system/ticketchanger.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
repositoryhooksystemplugin/0.11/repository_hook_system/interface.py
r4247 r4425 16 16 """can this subscriber be invoked on this hook?""" 17 17 18 def invoke(changeset): 19 """what to do on a commit""" 18 def after_commit(changeset): 19 """what to do after a commit""" 20 21 def before_commit(changeset): 22 """what to do before a commit""" 23 24 def other_repository_action(*args): 25 """what to do in the case of some other repositiory action""" 20 26 21 27 ### interfaces for the hook system 22 28 23 29 class IRepositoryChangeListener(Interface): 24 """listeners to changes from repository hooks""" 30 """This is a particular type of repository (SVN, Git, etc)'s change 31 listener.""" 25 32 26 33 def type(): repositoryhooksystemplugin/0.11/repository_hook_system/listener.py
r4247 r4425 33 33 # find the active listeners 34 34 listeners = ExtensionPoint(IRepositoryChangeListener).extensions(env) 35 35 36 36 # find the listener for the given repository type and invoke the hook 37 37 for listener in listeners: 38 38 if env.config.get('trac', 'repository_type') in listener.type(): 39 changeset = listener.changeset(repo, *args)39 changeset = listener.changeset(repo, hook, *args) 40 40 subscribers = listener.subscribers(hook) 41 41 for subscriber in subscribers: 42 subscriber.invoke(changeset) 42 funcname = hook.replace("-","_") 43 func = getattr(subscriber, funcname, None) 44 if func: 45 func(changeset) 43 46 44 47 def filename(): repositoryhooksystemplugin/0.11/repository_hook_system/svnhooksystem.py
r4247 r4425 13 13 from trac.core import * 14 14 from trac.util.text import CRLF 15 from trac.versioncontrol.api import NoSuchChangeset 15 16 from utils import iswritable 16 17 … … 78 79 and subscriber.is_available(self.type(), hookname) ] 79 80 80 def changeset(self, repo, revision):81 def changeset(self, repo, hook, revision): 81 82 """ 82 83 return the changeset given the repository object and revision number 83 84 """ 84 85 try: 85 chgset = repo.get_changeset(revision) 86 if hook == 'pre-commit': 87 chgset = {'transaction' : revision} #Trac has no way to get a transaction out of svn 88 else: 89 chgset = repo.get_changeset(revision) 86 90 except NoSuchChangeset: 87 91 # XXX should probably throw an exception (same one?) repositoryhooksystemplugin/0.11/repository_hook_system/ticketchanger.py
r4256 r4425 47 47 return True 48 48 49 def invoke(self, chgset):49 def post_commit(self, chgset): 50 50 51 51 # regular expressions
