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)