def test_change_non_ascii(self): to_add = [ FileNode('żółwik/zwierzątko', content='ćććć'), FileNode(u'żółwik/zwierzątko_uni', content=u'ćććć'), ] for node in to_add: self.imc.add(node) tip = self.imc.commit(u'Initial', u'*****@*****.**') # Change node's content node = FileNode('żółwik/zwierzątko', content='My **changed** content') self.imc.change(node) self.imc.commit(u'Changed %s' % safe_unicode(node.path), u'*****@*****.**') node = FileNode(u'żółwik/zwierzątko_uni', content=u'My **changed** content') self.imc.change(node) self.imc.commit(u'Changed %s' % safe_unicode(node.path), u'*****@*****.**') newtip = self.repo.get_changeset() self.assertNotEqual(tip, newtip) self.assertNotEqual(tip.id, newtip.id) self.assertEqual( newtip.get_node('żółwik/zwierzątko').content, 'My **changed** content') self.assertEqual( newtip.get_node('żółwik/zwierzątko_uni').content, 'My **changed** content')
def test_change_non_ascii(self): to_add = [ FileNode('żółwik/zwierzątko', content='ćććć'), FileNode(u'żółwik/zwierzątko_uni', content=u'ćććć'), ] for node in to_add: self.imc.add(node) tip = self.imc.commit(u'Initial', u'*****@*****.**') # Change node's content node = FileNode('żółwik/zwierzątko', content='My **changed** content') self.imc.change(node) self.imc.commit(u'Changed %s' % safe_unicode(node.path), u'*****@*****.**') node = FileNode(u'żółwik/zwierzątko_uni', content=u'My **changed** content') self.imc.change(node) self.imc.commit(u'Changed %s' % safe_unicode(node.path), u'*****@*****.**') newtip = self.repo.get_changeset() self.assertNotEqual(tip, newtip) self.assertNotEqual(tip.id, newtip.id) self.assertEqual(newtip.get_node('żółwik/zwierzątko').content, 'My **changed** content') self.assertEqual(newtip.get_node('żółwik/zwierzątko_uni').content, 'My **changed** content')
def branch(self): heads = self.repository._heads(reverse=False) ref = heads.get(self.raw_id) if ref: return safe_unicode(ref)
def __init__(self, repository, revision): self._stat_modes = {} self.repository = repository try: commit = self.repository._repo.get_object(revision) if isinstance(commit, objects.Tag): revision = commit.object[1] commit = self.repository._repo.get_object(commit.object[1]) except KeyError: raise RepositoryError("Cannot get object with id %s" % revision) self.raw_id = revision self.id = self.raw_id self.short_id = self.raw_id[:12] self._commit = commit self._tree_id = commit.tree self._commiter_property = 'committer' self._author_property = 'author' self._date_property = 'commit_time' self._date_tz_property = 'commit_timezone' self.revision = repository.revisions.index(revision) self.message = safe_unicode(commit.message) self.nodes = {} self._paths = {}
def description(self): undefined_description = u'unknown' description_path = os.path.join(self.path, '.git', 'description') if os.path.isfile(description_path): return safe_unicode(open(description_path).read()) else: return undefined_description
def description(self): undefined_description = u'unknown' return safe_unicode( self._repo.ui.config('web', 'description', undefined_description, untrusted=True))
def _get_bookmarks(self): if self._empty: return {} sortkey = lambda ctx: ctx[0] # sort by name _bookmarks = [(safe_unicode(n), hex(h)) for n, h in self._repo._bookmarks.items()] return OrderedDict(sorted(_bookmarks, key=sortkey, reverse=True))
def __init__(self, repository, revision): self._stat_modes = {} self.repository = repository try: commit = self.repository._repo.get_object(revision) if isinstance(commit, objects.Tag): revision = commit.object[1] commit = self.repository._repo.get_object(commit.object[1]) except KeyError: raise RepositoryError("Cannot get object with id %s" % revision) self.raw_id = revision self.id = self.raw_id self.short_id = self.raw_id[:12] self._commit = commit self._tree_id = commit.tree self._committer_property = 'committer' self._author_property = 'author' self._date_property = 'commit_time' self._date_tz_property = 'commit_timezone' self.revision = repository.revisions.index(revision) self.message = safe_unicode(commit.message) self.nodes = {} self._paths = {}
def name(self): """ Returns name of the node so if its path then only last part is returned. """ org = safe_unicode(self.path.rstrip('/').split('/')[-1]) return u'%s @ %s' % (org, self.changeset.short_id)
def description(self): idx_loc = '' if self.bare else '.git' undefined_description = u'unknown' description_path = os.path.join(self.path, idx_loc, 'description') if os.path.isfile(description_path): return safe_unicode(open(description_path).read()) else: return undefined_description
def description(self): idx_loc = "" if self.bare else ".git" undefined_description = u"unknown" description_path = os.path.join(self.path, idx_loc, "description") if os.path.isfile(description_path): return safe_unicode(open(description_path).read()) else: return undefined_description
def content(self): """ Returns lazily content of the FileNode. If possible, would try to decode content from UTF-8. """ content = self._get_content() if bool(content and '\0' in content): return content return safe_unicode(content)
def _get_bookmarks(self): if self._empty: return {} sortkey = lambda ctx: ctx[0] # sort by name _bookmarks = [( safe_unicode(n), hex(h), ) for n, h in self._repo._bookmarks.items()] return OrderedDict(sorted(_bookmarks, key=sortkey, reverse=True))
def content(self): """ Returns lazily content of the FileNode. If possible, would try to decode content from UTF-8. """ if self.changeset: content = self.changeset.get_file_content(self.path) else: content = self._content if bool(content and '\0' in content): return content return safe_unicode(content)
def __init__(self, repository, revision): self._stat_modes = {} self.repository = repository self.raw_id = revision self.revision = repository.revisions.index(revision) self.short_id = self.raw_id[:12] self.id = self.raw_id try: commit = self.repository._repo.get_object(self.raw_id) except KeyError: raise RepositoryError("Cannot get object with id %s" % self.raw_id) self._commit = commit self._tree_id = commit.tree self.message = safe_unicode(commit.message) #self.branch = None self.tags = [] self.nodes = {} self._paths = {}
def _get_branches(self, normal=True, closed=False): """ Get's branches for this repository Returns only not closed branches by default :param closed: return also closed branches for mercurial :param normal: return also normal branches """ if self._empty: return {} def _branchtags(localrepo): """ Patched version of mercurial branchtags to not return the closed branches :param localrepo: locarepository instance """ bt = {} bt_closed = {} for bn, heads in localrepo.branchmap().iteritems(): tip = heads[-1] if 'close' in localrepo.changelog.read(tip)[5]: bt_closed[bn] = tip else: bt[bn] = tip if not normal: return bt_closed if closed: bt.update(bt_closed) return bt sortkey = lambda ctx: ctx[0] # sort by name _branches = [(safe_unicode(n), hex(h),) for n, h in _branchtags(self._repo).items()] return OrderedDict(sorted(_branches, key=sortkey, reverse=False))
def _get_branches(self, closed=False): """ Get's branches for this repository Returns only not closed branches by default :param closed: return also closed branches for mercurial """ if self._empty: return {} def _branchtags(localrepo): """ Patched version of mercurial branchtags to not return the closed branches :param localrepo: locarepository instance """ bt = {} bt_closed = {} for bn, heads in localrepo.branchmap().iteritems(): tip = heads[-1] if 'close' in localrepo.changelog.read(tip)[5]: bt_closed[bn] = tip else: bt[bn] = tip if closed: bt.update(bt_closed) return bt sortkey = lambda ctx: ctx[0] # sort by name _branches = [( safe_unicode(n), hex(h), ) for n, h in _branchtags(self._repo).items()] return OrderedDict(sorted(_branches, key=sortkey, reverse=False))
def message(self): return safe_unicode(self._ctx.description())
def branch(self): return safe_unicode(self._ctx.branch())
def description(self): undefined_description = u"unknown" return safe_unicode(self._repo.ui.config("web", "description", undefined_description, untrusted=True))
def committer(self): return safe_unicode(getattr(self._commit, self._committer_property))
def message(self): return safe_unicode(self._commit.message)
def name(self): """ Returns name of the node so if its path then only last part is returned. """ return safe_unicode(self.path.rstrip('/').split('/')[-1])
def contact(self): undefined_contact = u'Unknown' return safe_unicode(get_contact(self._repo.ui.config) or undefined_contact)
def committer(self): return safe_unicode(self.author)
def line_decoder(l): if l.startswith('+') and not l.startswith('+++'): self.adds += 1 elif l.startswith('-') and not l.startswith('---'): self.removes += 1 return safe_unicode(l)
def commiter(self): return safe_unicode(self.auhtor)
def author(self): return safe_unicode(getattr(self._commit, self._author_property))
def author(self): return safe_unicode(self._ctx.user())
def description(self): undefined_description = u'unknown' return safe_unicode(self._repo.ui.config('web', 'description', undefined_description, untrusted=True))
def unicode_path(self): return safe_unicode(self.path)
def author(self): return safe_unicode(self._commit.committer)
def contact(self): undefined_contact = u'Unknown' return safe_unicode( get_contact(self._repo.ui.config) or undefined_contact)
def commiter(self): return safe_unicode(getattr(self._commit, self._commiter_property))