def _format_sha_link(self, formatter, sha, label): # FIXME: this function needs serious rethinking... reponame = '' context = formatter.context while context: if context.resource.realm in ('source', 'changeset'): reponame = context.resource.parent.id break context = context.parent try: repos = RepositoryManager(self.env).get_repository(reponame) if not repos: raise Exception("Repository '%s' not found" % reponame) sha = repos.normalize_rev(sha) # in case it was abbreviated changeset = repos.get_changeset(sha) return tag.a(label, class_='changeset', title=shorten_line(changeset.message), href=formatter.href.changeset(sha, repos.reponame)) except Exception as e: return tag.a(label, class_='missing changeset', title=to_unicode(e), rel='nofollow')
def expand_macro(self, formatter, name, content, args={}): reponame = args.get('repository') or '' rev_str = args.get('revision') repos = RepositoryManager(self.env).get_repository(reponame) rev = None try: changeset = repos.get_changeset(repos.normalize_rev(rev_str)) message = changeset.message rev = repos.db_rev(changeset.rev) resource = repos.resource # add review status to commit message ( review = CodeReview(self.env, reponame, rev) status = review.encode(review.status) message += '\n\n{{{#!html \n' message += '<div class="codereviewstatus">' message += ' <div class="system-message %s">' % status.lower() message += ' <p>Code review status: ' message += ' <span>%s</span>' % review.status message += ' </p>' message += ' </div>' message += '</div>' message += '\n}}}' except Exception: message = content resource = Resource('repository', reponame) if formatter.context.resource.realm == 'ticket': ticket_re = CommitTicketUpdater.ticket_re if not any( int(tkt_id) == int(formatter.context.resource.id) for tkt_id in ticket_re.findall(message)): return tag.p( "(The changeset message doesn't reference this " "ticket)", class_='hint') if ChangesetModule(self.env).wiki_format_messages: ctxt = formatter.context return tag.div(format_to_html(self.env, ctxt('changeset', rev, parent=resource), message, escape_newlines=True), class_='message') else: return tag.pre(message, class_='message')
def _format_sha_link(self, formatter, sha, label): # FIXME: this function needs serious rethinking... reponame = '' context = formatter.context while context: if context.resource.realm in ('source', 'changeset'): reponame = context.resource.parent.id break context = context.parent repos = RepositoryManager(self.env).get_all_repositories() for r in repos: try: testrepo = RepositoryManager(self.env).get_repository(r) testrepo.get_changeset(testrepo.normalize_rev(sha)) reponame = testrepo.reponame except Exception, e: self.log.debug("%s not found in repo: %s" % (sha, r))
def test_rev_is_anchestor_of(self): # regression test for #11215 path = os.path.join(self.repos_path, '.git') DbRepositoryProvider(self.env).add_repository('gitrepos', path, 'git') repos = RepositoryManager(self.env).get_repository('gitrepos') parent_rev = repos.youngest_rev create_file(os.path.join(self.repos_path, 'ticket11215.txt')) self._git('add', 'ticket11215.txt') self._git_commit('-m', 'ticket11215', date=datetime(2013, 6, 27, 18, 26, 2)) repos.sync() rev = repos.youngest_rev self.assertEqual(rev, repos.normalize_rev(rev[:7])) self.assertNotEqual(rev, parent_rev) self.assertFalse(repos.rev_older_than(None, None)) self.assertFalse(repos.rev_older_than(None, rev[:7])) self.assertFalse(repos.rev_older_than(rev[:7], None)) self.assertTrue(repos.rev_older_than(parent_rev, rev)) self.assertTrue(repos.rev_older_than(parent_rev[:7], rev[:7])) self.assertFalse(repos.rev_older_than(rev, parent_rev)) self.assertFalse(repos.rev_older_than(rev[:7], parent_rev[:7]))