diff -r e875a0cf7f3a -r 0b486b5e0796 mercurial/hg.py --- a/mercurial/hg.py Tue May 31 21:24:14 2005 -0800 +++ b/mercurial/hg.py Tue May 31 21:33:27 2005 -0800 @@ -137,11 +137,13 @@ def read(self, node): return self.extract(self.revision(node)) - def add(self, manifest, list, desc, transaction, p1=None, p2=None): - user = (os.environ.get("HGUSER") or + def add(self, manifest, list, desc, transaction, p1=None, p2=None, + user=None, date=None): + user = (user or + os.environ.get("HGUSER") or os.environ.get("EMAIL") or os.environ.get("LOGNAME", "unknown") + '@' + socket.getfqdn()) - date = "%d %d" % (time.time(), time.timezone) + date = date or "%d %d" % (time.time(), time.timezone) list.sort() l = [hex(manifest), user, date] + list + ["", desc] text = "\n".join(l) @@ -344,6 +346,30 @@ return lock.lock(self.join("lock"), wait) raise inst + def rawcommit(self, files, text, user, date, p1=None, p2=None): + p1 = p1 or self.current or nullid + pchange = self.changelog.read(p1) + pmmap = self.manifest.read(pchange[0]) + tr = self.transaction() + mmap = {} + linkrev = self.changelog.count() + for f in files: + try: + t = file(f).read() + except IOError: + self.ui.warn("Read file %s error, skipped\n" % f) + continue + r = self.file(f) + 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.dircache.clear() + self.dircache.update(mmap) + def commit(self, parent, update = None, text = ""): self.lock() try: