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 |