Mercurial > hg > mercurial-crew-with-dirclash
annotate mercurial/lock.py @ 672:dbe0ce2ae196
More IE friendly diff output related templates.
# HG changeset patch
# User Edouard Gomez <ed.gomez@free.fr>
# Node ID 6eee9b54c53c41643192c7920db642c984a00a21
# Parent 8b8f710bb65875d588044c3615cf42180aee23ff
More IE friendly diff output related templates.
I thought i could use CSS to render properly the diff blocks in IE.
But i was obviously too optmistic and didn't realized that IE only
renders preformated text for pre tag content...
So i had to rollback some of my changes to accomodate to this IE
bug/limitation. A diff blocks become pre tags, and diff lines
become span again. Hopefully, the pages continue validating.
author | Edouard Gomez <ed.gomez@free.fr> |
---|---|
date | Sun, 10 Jul 2005 16:14:28 -0800 |
parents | 03f27b1381f9 |
children | 5ca319a641e1 574869103985 |
rev | line source |
---|---|
161 | 1 # lock.py - simple locking scheme for mercurial |
2 # | |
3 # Copyright 2005 Matt Mackall <mpm@selenic.com> | |
4 # | |
5 # This software may be used and distributed according to the terms | |
6 # of the GNU General Public License, incorporated herein by reference. | |
7 | |
8 import os, time | |
422
10c43444a38e
[PATCH] Enables lock work under the other 'OS'
mpm@selenic.com
parents:
161
diff
changeset
|
9 import util |
161 | 10 |
11 class LockHeld(Exception): | |
12 pass | |
13 | |
14 class lock: | |
15 def __init__(self, file, wait = 1): | |
16 self.f = file | |
17 self.held = 0 | |
18 self.wait = wait | |
19 self.lock() | |
20 | |
21 def __del__(self): | |
22 self.release() | |
23 | |
24 def lock(self): | |
25 while 1: | |
26 try: | |
27 self.trylock() | |
28 return 1 | |
29 except LockHeld, inst: | |
30 if self.wait: | |
31 time.sleep(1) | |
32 continue | |
33 raise inst | |
515 | 34 |
161 | 35 def trylock(self): |
36 pid = os.getpid() | |
37 try: | |
422
10c43444a38e
[PATCH] Enables lock work under the other 'OS'
mpm@selenic.com
parents:
161
diff
changeset
|
38 util.makelock(str(pid), self.f) |
161 | 39 self.held = 1 |
40 except: | |
422
10c43444a38e
[PATCH] Enables lock work under the other 'OS'
mpm@selenic.com
parents:
161
diff
changeset
|
41 raise LockHeld(util.readlock(self.f)) |
161 | 42 |
43 def release(self): | |
44 if self.held: | |
45 self.held = 0 | |
503
c6a2e41c8c60
Fix troubles with clone and exception handling
mpm@selenic.com
parents:
429
diff
changeset
|
46 try: |
c6a2e41c8c60
Fix troubles with clone and exception handling
mpm@selenic.com
parents:
429
diff
changeset
|
47 os.unlink(self.f) |
c6a2e41c8c60
Fix troubles with clone and exception handling
mpm@selenic.com
parents:
429
diff
changeset
|
48 except: pass |
161 | 49 |