Show More
@@ -194,8 +194,8 b' class SimpleGit(BaseVCSController):' | |||
|
194 | 194 | log.debug('Repository path is %s' % repo_path) |
|
195 | 195 | |
|
196 | 196 | baseui = make_ui('db') |
|
197 | for k, v in extras.items(): | |
|
198 | baseui.setconfig('rhodecode_extras', k, v) | |
|
197 | self.__inject_extras(repo_path, baseui, extras) | |
|
198 | ||
|
199 | 199 | |
|
200 | 200 | try: |
|
201 | 201 | # invalidate cache on push |
@@ -265,22 +265,36 b' class SimpleGit(BaseVCSController):' | |||
|
265 | 265 | return op |
|
266 | 266 | |
|
267 | 267 | def _handle_githooks(self, action, baseui, environ): |
|
268 | ||
|
269 | 268 | from rhodecode.lib.hooks import log_pull_action, log_push_action |
|
270 | 269 | service = environ['QUERY_STRING'].split('=') |
|
271 | 270 | if len(service) < 2: |
|
272 | 271 | return |
|
273 | 272 | |
|
274 | class cont(object): | |
|
275 | pass | |
|
276 | ||
|
277 | repo = cont() | |
|
278 | setattr(repo, 'ui', baseui) | |
|
273 | from rhodecode.model.db import Repository | |
|
274 | _repo = Repository.get_by_repo_name(repo_name) | |
|
275 | _repo = _repo.scm_instance | |
|
276 | _repo._repo.ui = baseui | |
|
279 | 277 | |
|
280 | 278 | push_hook = 'pretxnchangegroup.push_logger' |
|
281 | 279 | pull_hook = 'preoutgoing.pull_logger' |
|
282 | 280 | _hooks = dict(baseui.configitems('hooks')) or {} |
|
283 | 281 | if action == 'push' and _hooks.get(push_hook): |
|
284 | log_push_action(ui=baseui, repo=repo) | |
|
282 | log_push_action(ui=baseui, repo=repo._repo) | |
|
285 | 283 | elif action == 'pull' and _hooks.get(pull_hook): |
|
286 | log_pull_action(ui=baseui, repo=repo) | |
|
284 | log_pull_action(ui=baseui, repo=repo._repo) | |
|
285 | ||
|
286 | def __inject_extras(self, repo_path, baseui, extras={}): | |
|
287 | """ | |
|
288 | Injects some extra params into baseui instance | |
|
289 | ||
|
290 | :param baseui: baseui instance | |
|
291 | :param extras: dict with extra params to put into baseui | |
|
292 | """ | |
|
293 | ||
|
294 | # make our hgweb quiet so it doesn't print output | |
|
295 | baseui.setconfig('ui', 'quiet', 'true') | |
|
296 | ||
|
297 | #inject some additional parameters that will be available in ui | |
|
298 | #for hooks | |
|
299 | for k, v in extras.items(): | |
|
300 | baseui.setconfig('rhodecode_extras', k, v) |
@@ -47,6 +47,15 b' class GitRepository(BaseRepository):' | |||
|
47 | 47 | |
|
48 | 48 | self.path = abspath(repo_path) |
|
49 | 49 | self._repo = self._get_repo(create, src_url, update_after_clone, bare) |
|
50 | #temporary set that to now at later we will move it to constructor | |
|
51 | baseui = None | |
|
52 | if baseui is None: | |
|
53 | from mercurial.ui import ui | |
|
54 | baseui = ui() | |
|
55 | # patch the instance of GitRepo with an "FAKE" ui object to add | |
|
56 | # compatibility layer with Mercurial | |
|
57 | setattr(self._repo, 'ui', baseui) | |
|
58 | ||
|
50 | 59 | try: |
|
51 | 60 | self.head = self._repo.head() |
|
52 | 61 | except KeyError: |
@@ -471,6 +480,17 b' class GitRepository(BaseRepository):' | |||
|
471 | 480 | # If error occurs run_git_command raises RepositoryError already |
|
472 | 481 | self.run_git_command(cmd) |
|
473 | 482 | |
|
483 | def pull(self, url): | |
|
484 | """ | |
|
485 | Tries to pull changes from external location. | |
|
486 | """ | |
|
487 | url = self._get_url(url) | |
|
488 | cmd = ['pull'] | |
|
489 | cmd.append("--ff-only") | |
|
490 | cmd = ' '.join(cmd) | |
|
491 | # If error occurs run_git_command raises RepositoryError already | |
|
492 | self.run_git_command(cmd) | |
|
493 | ||
|
474 | 494 | @LazyProperty |
|
475 | 495 | def workdir(self): |
|
476 | 496 | """ |
@@ -351,7 +351,7 b' class ScmModel(BaseModel):' | |||
|
351 | 351 | 'scm': repo.alias, |
|
352 | 352 | } |
|
353 | 353 | |
|
354 | #inject ui extra param to log this action via push logger | |
|
354 | # inject ui extra param to log this action via push logger | |
|
355 | 355 | for k, v in extras.items(): |
|
356 | 356 | repo._repo.ui.setconfig('rhodecode_extras', k, v) |
|
357 | 357 |
General Comments 0
You need to be logged in to leave comments.
Login now