Mercurial > public > mercurial-scm > hg
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") ] |