Edgewall Software

Ticket #8180: tracext-hg-backend.py.latin-1.diff

File tracext-hg-backend.py.latin-1.diff, 2.9 KB (added by anonymous, 2 years ago)

This one worked for me

  • tracext/hg/backend.py

    Index: tracext/hg/backend.py
     
    610610        for rev in xrange(n_rev, -1, -1): 
    611611            for f in self.repos.repo.changectx(rev).files(): 
    612612                for d in dirnames[:]: 
    613                     if f.startswith(d): 
     613                    if unicode(f,'latin-1').startswith(d): 
    614614                        dirnodes[d] = log.node(rev) 
    615615                        dirnames.remove(d) 
    616616                        if not dirnames: # if nothing left to find 
     
    633633            entries = {} 
    634634            for file in self.manifest.keys(): 
    635635                if file.startswith(dir): 
    636                     entry = file[len(dir):].split('/', 1)[0] 
     636                    entry = unicode(file[len(dir):].split('/', 1)[0], 'latin-1')  
    637637                    entries[entry] = 1 
    638638            if entries: 
    639639                kind = Node.DIRECTORY 
     
    657657        self.time = self.repos.hg_time(log.read(node)[2]) 
    658658        rev = self.repos.hg_display(node) 
    659659        Node.__init__(self, path, rev, kind) 
    660         self.created_path = path 
     660        self.created_path = unicode(path, 'latin-1') 
    661661        self.created_rev = rev 
    662662        self.node = node 
    663663        self.data = None 
     
    885885        renames = {} 
    886886        changes = [] 
    887887        for f in self.files: # 'added' and 'edited' files 
     888            f2 = unicode(f, 'latin-1') 
    888889            if f in deletions: # and since Mercurial > 0.7 [hg c6ffedc4f11b] 
    889890                continue          # also 'deleted' files 
    890891            action = None 
    891892            # TODO: find a way to detect conflicts and show how they were solved 
    892893            if manifest1 and f in manifest1: 
    893894                action = Changeset.EDIT                 
    894                 changes.append((f, Node.FILE, action, f, self.parents[0])) 
     895                changes.append((f2, Node.FILE, action, f, self.parents[0])) 
    895896            if manifest2 and f in manifest2: 
    896897                action = Changeset.EDIT                 
    897                 changes.append((f, Node.FILE, action, f, self.parents[1])) 
     898                changes.append((f2, Node.FILE, action, f, self.parents[1])) 
    898899 
    899900            if not action: 
    900901                rename_info = repo.file(f).renamed(manifest[f]) 
     
    911912                    action = Changeset.ADD 
    912913                    base_path = '' 
    913914                    base_rev = None 
    914                 changes.append((f, Node.FILE, action, base_path, base_rev)) 
     915                changes.append((f2, Node.FILE, action, base_path, base_rev)) 
    915916 
    916917        for f, p in deletions.items(): 
     918            f2 = unicode(f, 'latin-1') 
    917919            if f not in renames: 
    918                 changes.append((f, Node.FILE, Changeset.DELETE, f, p)) 
     920                changes.append((f2, Node.FILE, Changeset.DELETE, f, p)) 
    919921        changes.sort() 
    920922        for change in changes: 
    921923            yield change