Mercurial > hg-git
changeset 166:405a915bf352
remove rename detection, add explicit changelog recording on merges
author | Scott Chacon <schacon@gmail.com> |
---|---|
date | Mon, 01 Jun 2009 15:10:01 -0700 |
parents | cb922a0ca22d |
children | cb5beb432e78 |
files | git_handler.py hgrepo.py |
diffstat | 2 files changed, 21 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/git_handler.py Mon Jun 01 14:57:19 2009 -0700 +++ b/git_handler.py Mon Jun 01 15:10:01 2009 -0700 @@ -114,6 +114,7 @@ self.save_map() def push(self, remote_name): + self.fetch(remote_name) # get and convert objects if they already exist self.ui.status(_("pushing to : %s\n") % remote_name) self.export_commits() self.update_remote_references(remote_name) @@ -290,6 +291,11 @@ add_extras = True extra_message += "extra : " + key + " : " + urllib.quote(value) + "\n" + # save file context listing on merge commit + if (len(parents) > 1): + add_extras = True + for filenm in ctx.files(): + extra_message += "files : " + filenm + "\n" if add_extras: commit['message'] += "\n--HG--\n" + extra_message @@ -546,7 +552,6 @@ todo = [] done = set() convert_list = {} - self.renames = {} # get a list of all the head shas if refs: @@ -591,9 +596,6 @@ commit = convert_list[csha] if not self.map_hg_get(csha): # it's already here self.import_git_commit(commit) - else: - # we need to get rename info for further upstream - self.pseudo_import_git_commit(commit) self.update_hg_bookmarks(remote_name) @@ -636,6 +638,7 @@ split = message.split("\n\n--HG--\n", 1) renames = {} extra = {} + files = [] branch = False if len(split) == 2: message, meta = split @@ -651,39 +654,19 @@ renames[after] = before if command == 'branch': branch = data + if command == 'files': + files.append(data) if command == 'extra': before, after = data.split(" : ", 1) extra[before] = urllib.unquote(after) - return (message, renames, branch, extra) - - def pseudo_import_git_commit(self, commit): - (strip_message, hg_renames, hg_branch, extra) = self.extract_hg_metadata(commit.message) - cs = self.map_hg_get(commit.id) - p1 = nullid - p2 = nullid - if len(commit.parents) > 0: - sha = commit.parents[0] - p1 = self.map_hg_get(sha) - if len(commit.parents) > 1: - sha = commit.parents[1] - p2 = self.map_hg_get(sha) - if len(commit.parents) > 2: - # TODO : map extra parents to the extras file - pass - # saving rename info - if (not (p2 == nullid) or (p1 == nullid)): - self.renames[cs] = {} - else: - self.renames[cs] = self.renames[p1].copy() - - self.renames[cs].update(hg_renames) + return (message, renames, branch, files, extra) def import_git_commit(self, commit): self.ui.debug(_("importing: %s\n") % commit.id) # TODO : Do something less coarse-grained than try/except on the # get_file call for removed files - (strip_message, hg_renames, hg_branch, extra) = self.extract_hg_metadata(commit.message) + (strip_message, hg_renames, hg_branch, force_files, extra) = self.extract_hg_metadata(commit.message) # get a list of the changed, added, removed files files = self.git.get_files_changed(commit) @@ -757,20 +740,11 @@ ctx = context.memctx(self.repo, (p1, p2), text, files, getfilectx, author, date, extra) - node = self.repo.commitctx(ctx, pa) + node = self.repo.commitctx(ctx, pa, force_files) # save changeset to mapping file cs = hex(node) - self.map_set(commit.id, cs) - - # saving rename info - if (not (p2 == nullid) or (p1 == nullid)): - self.renames[cs] = {} - else: - self.renames[cs] = self.renames[p1].copy() - - self.renames[cs].update(hg_renames) - + self.map_set(commit.id, cs) def check_bookmarks(self): if self.ui.config('extensions', 'hgext.bookmarks') is not None:
--- a/hgrepo.py Mon Jun 01 14:57:19 2009 -0700 +++ b/hgrepo.py Mon Jun 01 15:10:01 2009 -0700 @@ -4,7 +4,7 @@ class hgrepo(localrepo.localrepository): - def commitctx(self, wctx, ancestor): + def commitctx(self, wctx, ancestor, force_files = False): tr = None valid = 0 # don't save the dirstate if this isn't set @@ -64,9 +64,6 @@ except (OSError, IOError): remove.append(f) - - print 'CHANGED' - print changed updated, added = [], [] for f in sorted(changed): @@ -99,8 +96,14 @@ raise util.Abort(_("empty commit message")) text = '\n'.join(lines) + file_list = [] + if len(force_files) > 0: + file_list = force_files + else: + file_list = changed + removed + self.changelog.delayupdate() - n = self.changelog.add(mn, changed + removed, text, trp, p1, p2, + n = self.changelog.add(mn, file_list, text, trp, p1, p2, user, wctx.date(), extra) p = lambda: self.changelog.writepending() and self.root or "" self.hook('pretxncommit', throw=True, node=hex(n), parent1=xp1,