diff --git a/mercurial/hg.py b/mercurial/hg.py
index f57519cddd3dad6875ae96bbeac626b054182242_bWVyY3VyaWFsL2hnLnB5..2502aa6634845c927190d90dfe98bdb46baa2aee_bWVyY3VyaWFsL2hnLnB5 100644
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -388,7 +388,8 @@
             raise inst
 
     def rawcommit(self, files, text, user, date, p1=None, p2=None):
-        p1 = p1 or self.current or nullid
+        p1 = p1 or self.dirstate.parents()[0] or nullid
+        p2 = p2 or self.dirstate.parents()[1] or nullid
         pchange = self.changelog.read(p1)
         pmmap = self.manifest.read(pchange[0])
         tr = self.transaction()
@@ -401,9 +402,10 @@
                 self.ui.warn("Read file %s error, skipped\n" % f)
                 continue
             r = self.file(f)
+            # FIXME - need to find both parents properly
             prev = pmmap.get(f, nullid)
             mmap[f] = r.add(t, tr, linkrev, prev)
 
         mnode = self.manifest.add(mmap, tr, linkrev, pchange[0])
         n = self.changelog.add(mnode, files, text, tr, p1, p2, user ,date, )
         tr.close()
@@ -404,10 +406,10 @@
             prev = pmmap.get(f, nullid)
             mmap[f] = r.add(t, tr, linkrev, prev)
 
         mnode = self.manifest.add(mmap, tr, linkrev, pchange[0])
         n = self.changelog.add(mnode, files, text, tr, p1, p2, user ,date, )
         tr.close()
-        self.setcurrent(n)
+        self.dirstate.setparents(p1, p2)
         self.dirstate.clear()
         self.dirstate.update(mmap.keys(), "n")