Mercurial > hg > hg-git
changeset 226:3b8804c59b63
drop untested commit_import_ctx (use commitctx instead).
This should fix issue 6 bb, but may reveal others.
author | Abderrahim Kitouni <a.kitouni@gmail.com> |
---|---|
date | Tue, 28 Jul 2009 21:29:27 +0100 |
parents | cde57730faa7 |
children | c4f6e6f24bf1 |
files | git_handler.py hgrepo.py |
diffstat | 2 files changed, 6 insertions(+), 127 deletions(-) [+] |
line wrap: on
line diff
--- a/git_handler.py +++ b/git_handler.py @@ -370,12 +370,15 @@ date = (commit.author_time, -commit.author_timezone) text = strip_message + origtext = text try: text.decode('utf-8') except UnicodeDecodeError: - origtext = text text = self.decode_guess(text, commit.encoding) - extra['message'] = create_delta(text, origtext) + + text = '\n'.join([l.rstrip() for l in text.splitlines()]).strip('\n') + if text + '\n' != origtext: + extra['message'] = create_delta(text +'\n', origtext) author = commit.author @@ -464,7 +467,7 @@ ctx = context.memctx(self.repo, (p1, p2), text, files, getfilectx, author, date, extra) - node = self.repo.commit_import_ctx(ctx, pa) + node = self.repo.commitctx(ctx) self.swap_out_encoding(oldenc)
--- a/hgrepo.py +++ b/hgrepo.py @@ -10,130 +10,6 @@ def generate_repo_subclass(baseclass): class hgrepo(baseclass): - def commit_import_ctx(self, wctx, ancestor, force_files = None): - - tr = None - valid = 0 # don't save the dirstate if this isn't set - try: - force=False - force_editor=False - empty_ok=False - use_dirstate=False - update_dirstate=False - - commit = sorted(wctx.modified() + wctx.added()) - remove = wctx.removed() - extra = wctx.extra().copy() - branchname = extra['branch'] - user = wctx.user() - text = wctx.description() - - p1, p2 = [p.node() for p in wctx.parents()] - c1 = self.changelog.read(p1) - c2 = self.changelog.read(p2) - m1 = self.manifest.read(c1[0]).copy() - m2 = self.manifest.read(c2[0]) - ma = None - if ancestor: - ma = ancestor.manifest() - - xp1 = hex(p1) - if p2 == nullid: - xp2 = '' - else: - xp2 = hex(p2) - - tr = self.transaction() - trp = weakref.proxy(tr) - - # looking for files that have not actually changed content-wise, - # but have different nodeids because they were changed and then - # reverted, so they have changed in the revlog. - for f in m1: - if (f in m2) and (not f in commit) and (not m1[f] == m2[f]): - commit.append(f) - - # check in files - new = {} - changed = [] - linkrev = len(self) - for f in commit: - self.ui.note(f + "\n") - try: - fctx = wctx.filectx(f) - newflags = fctx.flags() - try: - new[f] = self.filecommit(fctx, m1, m2, linkrev, trp, changed) - except AttributeError: - new[f] = self._filecommit(fctx, m1, m2, linkrev, trp, changed) - if ((not changed or changed[-1] != f) and - m2.get(f) != new[f]): - # mention the file in the changelog if some - # flag changed, even if there was no content - # change. - if m1.flags(f) != newflags: - changed.append(f) - m1.set(f, newflags) - - except (OSError, IOError): - remove.append(f) - - updated, added = [], [] - for f in sorted(changed): - if f in m1 or f in m2: - updated.append(f) - else: - added.append(f) - - # update manifest - m1.update(new) - removed = [f for f in sorted(remove) if f in m1 or f in m2] - removed1 = [] - - for f in removed: - if f in m1: - del m1[f] - removed1.append(f) - else: - if ma and (f in ma): - del ma[f] - removed.remove(f) - - mn = self.manifest.add(m1, trp, linkrev, c1[0], c2[0], - (new, removed1)) - - #lines = [line.rstrip() for line in text.rstrip().splitlines()] - #while lines and not lines[0]: - # del lines[0] - #text = '\n'.join(lines) - if text[-1] == "\n": - text = text[:-1] - - file_list = changed + removed - - self.changelog.delayupdate() - 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, - parent2=xp2, pending=p) - self.changelog.finalize(trp) - tr.close() - - if self.branchcache: - self.branchtags() - - if update_dirstate: - self.dirstate.setparents(n) - valid = 1 # our dirstate updates are complete - - self.hook("commit", node=hex(n), parent1=xp1, parent2=xp2) - return n - finally: - if not valid: # don't save our updated dirstate - self.dirstate.invalidate() - del tr - def pull(self, remote, heads=None, force=False): if isinstance(remote, gitrepo): git = GitHandler(self, self.ui)