comparison mercurial/hg.py @ 203:0b486b5e0796

hg rawcommit command -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hg rawcommit command From: Christopher Li <hg@chrisli.org> This allows direct access to the commit command, primarily for importing from other SCMs. manifest hash: bea39fa8207582c9fa7ba0904721eb5113c61cf4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCnUinywK+sNU5EO8RAhWqAJ9PiafRbfEIA3VsO07BbGZr5adNvgCfT2k7 blYTdkrIiRzzCxn6yPq8Yu4= =o8k0 -----END PGP SIGNATURE-----
author mpm@selenic.com
date Tue, 31 May 2005 21:33:27 -0800
parents 8450c18f2a45
children ec327cf0d3a9
comparison
equal deleted inserted replaced
202:e875a0cf7f3a 203:0b486b5e0796
135 return (manifest, user, date, files, desc) 135 return (manifest, user, date, files, desc)
136 136
137 def read(self, node): 137 def read(self, node):
138 return self.extract(self.revision(node)) 138 return self.extract(self.revision(node))
139 139
140 def add(self, manifest, list, desc, transaction, p1=None, p2=None): 140 def add(self, manifest, list, desc, transaction, p1=None, p2=None,
141 user = (os.environ.get("HGUSER") or 141 user=None, date=None):
142 user = (user or
143 os.environ.get("HGUSER") or
142 os.environ.get("EMAIL") or 144 os.environ.get("EMAIL") or
143 os.environ.get("LOGNAME", "unknown") + '@' + socket.getfqdn()) 145 os.environ.get("LOGNAME", "unknown") + '@' + socket.getfqdn())
144 date = "%d %d" % (time.time(), time.timezone) 146 date = date or "%d %d" % (time.time(), time.timezone)
145 list.sort() 147 list.sort()
146 l = [hex(manifest), user, date] + list + ["", desc] 148 l = [hex(manifest), user, date] + list + ["", desc]
147 text = "\n".join(l) 149 text = "\n".join(l)
148 return self.addrevision(text, transaction, self.count(), p1, p2) 150 return self.addrevision(text, transaction, self.count(), p1, p2)
149 151
341 except lock.LockHeld, inst: 343 except lock.LockHeld, inst:
342 if wait: 344 if wait:
343 self.ui.warn("waiting for lock held by %s\n" % inst.args[0]) 345 self.ui.warn("waiting for lock held by %s\n" % inst.args[0])
344 return lock.lock(self.join("lock"), wait) 346 return lock.lock(self.join("lock"), wait)
345 raise inst 347 raise inst
348
349 def rawcommit(self, files, text, user, date, p1=None, p2=None):
350 p1 = p1 or self.current or nullid
351 pchange = self.changelog.read(p1)
352 pmmap = self.manifest.read(pchange[0])
353 tr = self.transaction()
354 mmap = {}
355 linkrev = self.changelog.count()
356 for f in files:
357 try:
358 t = file(f).read()
359 except IOError:
360 self.ui.warn("Read file %s error, skipped\n" % f)
361 continue
362 r = self.file(f)
363 prev = pmmap.get(f, nullid)
364 mmap[f] = r.add(t, tr, linkrev, prev)
365
366 mnode = self.manifest.add(mmap, tr, linkrev, pchange[0])
367 n = self.changelog.add(mnode, files, text, tr, p1, p2, user ,date, )
368 tr.close()
369 self.setcurrent(n)
370 self.dircache.clear()
371 self.dircache.update(mmap)
346 372
347 def commit(self, parent, update = None, text = ""): 373 def commit(self, parent, update = None, text = ""):
348 self.lock() 374 self.lock()
349 try: 375 try:
350 remove = [ l[:-1] for l in self.opener("to-remove") ] 376 remove = [ l[:-1] for l in self.opener("to-remove") ]