Mercurial > hg-stable
diff mercurial/hg.py @ 161:0b4c5cb953d9
Simply repository locking
This is a first pass at implementing repo locking. Next up, journal
recovery and undo.
author | mpm@selenic.com |
---|---|
date | Thu, 26 May 2005 08:53:04 -0800 |
parents | 083c38bdfa64 |
children | 5dcbe4d9a30c |
line wrap: on
line diff
--- a/mercurial/hg.py Wed May 25 16:40:22 2005 -0800 +++ b/mercurial/hg.py Thu May 26 08:53:04 2005 -0800 @@ -7,7 +7,7 @@ import sys, struct, sha, socket, os, time, re, urllib2 import urllib -from mercurial import byterange +from mercurial import byterange, lock from mercurial.transaction import * from mercurial.revlog import * from difflib import SequenceMatcher @@ -297,7 +297,17 @@ return transaction(self.opener, self.join("journal"), self.join("undo")) + def lock(self, wait = 1): + try: + return lock.lock(self.join("lock"), 0) + except lock.LockHeld, inst: + if wait: + self.ui.warn("waiting for lock held by %s\n" % inst.args[0]) + return lock.lock(self.join("lock"), wait) + raise inst + def commit(self, parent, update = None, text = ""): + self.lock() try: remove = [ l[:-1] for l in self.opener("to-remove") ] os.unlink(self.join("to-remove")) @@ -612,6 +622,7 @@ yield "".join([l, f, g]) def addchangegroup(self, generator): + self.lock() class genread: def __init__(self, generator): self.g = generator