Mercurial > hg > mercurial-crew-with-dirclash
annotate mercurial/lock.py @ 406:d8abb687d501
[PATCH] Using monotone-viz/git-viz with mercurial
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Using monotone-viz/git-viz with mercurial
From: Vincent Danjean <vdanjean.ml@free.fr>
monotone-viz is a small GTK+ application that visualizes monotone
ancestry graphs. Its home page is:
http://oandrieu.nerim.net/monotone-viz/
As monotone and git are similar, the author adapted the 0.9 version to
display git ancestry graphs and call it git-viz. I cannot see any link
from the homepage, but looking in the archive of git ML, it can be found
here:
http://oandrieu.nerim.net/monotone-viz/git-viz-0.1.tar.gz
I few days ago, I adapted it so that it works with the last versions
of git/cogito. Patches and package are available here:
http://dept-info.labri.fr/~danjean/deb.html#git-viz
Today, I patched hgit so that it respects the output of git-diff-tree,
I added git-{diff-tree,cat-file,rev-list,rev-tree} that call hgit (2
lines scripts), and added the script 'hg-viz'.
hg-viz create a .git directory and store the SHA1 of the tip in
.git/HEAD and then call my git-viz.
All these modifications are in the attached patch.
I try it in the mercurial repository. After applying the patch, you
just have to add the contrib directory in your PATH and call hg-viz.
An example of what we can see is on my web page (probably not for a
long time) : http://dept-info.labri.fr/~danjean/temp/hg-viz.png
Vincent
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCuM50ywK+sNU5EO8RAtlvAJ425JJI9chCdSi8D+R2Af/vJEOUpACffC9e
fxjJ3umBkffj5g86jWaRGZ0=
=LwA2
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Tue, 21 Jun 2005 18:35:32 -0800 |
parents | 0b4c5cb953d9 |
children | 10c43444a38e 688d03d6997a |
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 | |
9 | |
10 class LockHeld(Exception): | |
11 pass | |
12 | |
13 class lock: | |
14 def __init__(self, file, wait = 1): | |
15 self.f = file | |
16 self.held = 0 | |
17 self.wait = wait | |
18 self.lock() | |
19 | |
20 def __del__(self): | |
21 self.release() | |
22 | |
23 def lock(self): | |
24 while 1: | |
25 try: | |
26 self.trylock() | |
27 return 1 | |
28 except LockHeld, inst: | |
29 if self.wait: | |
30 time.sleep(1) | |
31 continue | |
32 raise inst | |
33 | |
34 def trylock(self): | |
35 pid = os.getpid() | |
36 try: | |
37 os.symlink(str(pid), self.f) | |
38 self.held = 1 | |
39 except: | |
40 raise LockHeld(os.readlink(self.f)) | |
41 | |
42 def release(self): | |
43 if self.held: | |
44 self.held = 0 | |
45 os.unlink(self.f) | |
46 |