Mercurial > hg-git
diff git_handler.py @ 171:88e413d853ee
fixed serious speed issue with rename detection
author | Scott Chacon <schacon@gmail.com> |
---|---|
date | Wed, 03 Jun 2009 09:22:17 -0700 |
parents | d67d00738298 |
children | ac92cdc45ceb |
line wrap: on
line diff
--- a/git_handler.py Tue Jun 02 21:27:19 2009 -0700 +++ b/git_handler.py Wed Jun 03 09:22:17 2009 -0700 @@ -187,6 +187,7 @@ return dict(filter(is_local_head, refs.items())) def export_git_objects(self): + self.manifest_renames = {} self.ui.status(_("importing Hg objects into Git\n")) total = len(self.repo.changelog) if total: @@ -331,16 +332,24 @@ trees = {} man = ctx.manifest() renames = [] - for filenm in man.keys(): + for filenm, nodesha in man.iteritems(): + file_id = hex(nodesha) # write blob if not in our git database - fctx = ctx.filectx(filenm) - rename = fctx.renamed() - if rename: - filerename, sha = rename + fctx = ctx.filectx(filenm) + filerename = None + if file_id in self.manifest_renames: + filerename = self.manifest_renames[file_id] + else: + rename = fctx.renamed() + if rename: + filerename, sha = rename + self.manifest_renames[file_id] = filerename + else: + self.manifest_renames[file_id] = None + if filerename: renames.append((filerename, filenm)) is_exec = 'x' in fctx.flags() is_link = 'l' in fctx.flags() - file_id = hex(fctx.filenode()) blob_sha = self.map_git_get(file_id) if not blob_sha: blob_sha = self.git.write_blob(fctx.data()) # writing new blobs to git