hgext/convert/__init__.py
changeset 4590 80fb4ec512b5
parent 4589 451e91ed535e
child 4591 9ec0a3b6a18a
equal deleted inserted replaced
4589:451e91ed535e 4590:80fb4ec512b5
    36         self.opts = opts
    36         self.opts = opts
    37         self.commitcache = {}
    37         self.commitcache = {}
    38         self.mapfile = mapfile
    38         self.mapfile = mapfile
    39         self.mapfilefd = None
    39         self.mapfilefd = None
    40         self.authors = {}
    40         self.authors = {}
    41         self.writeauthors = False
    41         self.authorfile = None
    42 
    42 
    43         self.map = {}
    43         self.map = {}
    44         try:
    44         try:
    45             origmapfile = open(self.mapfile, 'r')
    45             origmapfile = open(self.mapfile, 'r')
    46             for l in origmapfile:
    46             for l in origmapfile:
    49             origmapfile.close()
    49             origmapfile.close()
    50         except IOError:
    50         except IOError:
    51             pass
    51             pass
    52 
    52 
    53         # Read first the dst author map if any
    53         # Read first the dst author map if any
    54         if  hasattr(self.dest, 'authorfile'):
    54         authorfile = self.dest.authorfile()
    55             self.readauthormap(self.dest.authorfile())
    55         if authorfile and os.path.exists(authorfile):
       
    56             self.readauthormap(authorfile)
    56         # Extend/Override with new author map if necessary
    57         # Extend/Override with new author map if necessary
    57         if 'authors' in opts:
    58         if opts.get('authors'):
       
    59             import pdb
       
    60             pdb.set_trace()
    58             self.readauthormap(opts.get('authors'))
    61             self.readauthormap(opts.get('authors'))
    59             self.writeauthors = True
    62             self.authorfile = self.dest.authorfile()
    60 
    63 
    61     def walktree(self, heads):
    64     def walktree(self, heads):
    62         visit = heads
    65         visit = heads
    63         known = {}
    66         known = {}
    64         parents = {}
    67         parents = {}
   140         self.map[src] = dst
   143         self.map[src] = dst
   141         self.mapfilefd.write("%s %s\n" % (src, dst))
   144         self.mapfilefd.write("%s %s\n" % (src, dst))
   142         self.mapfilefd.flush()
   145         self.mapfilefd.flush()
   143 
   146 
   144     def writeauthormap(self):
   147     def writeauthormap(self):
   145         if self.writeauthors == True and len(self.authors) > 0 and hasattr(self.dest, 'authorfile'):
   148         authorfile = self.authorfile
   146            authorfile = self.dest.authorfile()
   149         if authorfile:
   147            self.ui.status('Writing author map file %s\n' % authorfile)
   150            self.ui.status('Writing author map file %s\n' % authorfile)
   148            ofile = open(authorfile, 'w+')
   151            ofile = open(authorfile, 'w+')
   149            for author in self.authors:
   152            for author in self.authors:
   150                ofile.write("%s=%s\n" % (author, self.authors[author]))
   153                ofile.write("%s=%s\n" % (author, self.authors[author]))
   151            ofile.close()
   154            ofile.close()
   152 
   155 
   153     def readauthormap(self, authorfile):
   156     def readauthormap(self, authorfile):
   154         try:
   157         afile = open(authorfile, 'r')
   155             afile = open(authorfile, 'r')
   158         for line in afile:
   156             for line in afile:
   159             try:
   157                 try:
   160                 srcauthor = line.split('=')[0].strip()
   158                     srcauthor = line.split('=')[0].strip()
   161                 dstauthor = line.split('=')[1].strip()
   159                     dstauthor = line.split('=')[1].strip()
   162                 if srcauthor in self.authors and dstauthor != self.authors[srcauthor]:
   160                     if srcauthor in self.authors and dstauthor != self.authors[srcauthor]:
   163                     self.ui.status(
   161                         self.ui.status(
   164                         'Overriding mapping for author %s, was %s, will be %s\n'
   162                             'Overriding mapping for author %s, was %s, will be %s\n'
   165                         % (srcauthor, self.authors[srcauthor], dstauthor))
   163                             % (srcauthor, self.authors[srcauthor], dstauthor))
   166                 else:
   164                     else:
   167                     self.ui.debug('Mapping author %s to %s\n'
   165                         self.ui.debug('Mapping author %s to %s\n'
   168                                   % (srcauthor, dstauthor))
   166 			    % (srcauthor, dstauthor))
       
   167                     self.authors[srcauthor] = dstauthor
   169                     self.authors[srcauthor] = dstauthor
   168 		    
   170             except IndexError:
   169                 except IndexError:
   171                 self.ui.warn(
   170                     self.ui.warn(
   172                     'Ignoring bad line in author file map %s: %s\n'
   171                         'Ignoring bad line in author file map %s: %s\n'
   173                     % (authorfile, line))
   172                         % (authorfile, line))
   174         afile.close()
   173             afile.close()
       
   174         except IOError:
       
   175             self.ui.warn('Error reading author file map %s.\n' % authorfile)
       
   176 
   175 
   177     def copy(self, rev):
   176     def copy(self, rev):
   178         c = self.commitcache[rev]
   177         c = self.commitcache[rev]
   179         files = self.source.getchanges(rev)
   178         files = self.source.getchanges(rev)
   180 
   179