Mercurial > hg
comparison contrib/hbisect.py @ 1854:638b1bc6c6c9
Fixed contrib/hbisect.py to work with the new opener behaviour.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Wed, 08 Mar 2006 05:07:20 +0100 |
parents | 2428e6d66f06 |
children | 0ba9dee8cfbd |
comparison
equal
deleted
inserted
replaced
1853:5ac811b720de | 1854:638b1bc6c6c9 |
---|---|
2 # | 2 # |
3 # This software may be used and distributed according to the terms | 3 # This software may be used and distributed according to the terms |
4 # of the GNU General Public License, incorporated herein by reference. | 4 # of the GNU General Public License, incorporated herein by reference. |
5 | 5 |
6 from mercurial.demandload import demandload | 6 from mercurial.demandload import demandload |
7 demandload(globals(), "os sys sets") | 7 demandload(globals(), "os sys sets mercurial:hg,util") |
8 from mercurial import hg | |
9 | 8 |
10 versionstr = "0.0.3" | 9 versionstr = "0.0.3" |
11 | 10 |
12 def lookup_rev(ui, repo, rev=None): | 11 def lookup_rev(ui, repo, rev=None): |
13 """returns rev or the checked-out revision if rev is None""" | 12 """returns rev or the checked-out revision if rev is None""" |
28 | 27 |
29 class bisect(object): | 28 class bisect(object): |
30 """dichotomic search in the DAG of changesets""" | 29 """dichotomic search in the DAG of changesets""" |
31 def __init__(self, ui, repo): | 30 def __init__(self, ui, repo): |
32 self.repo = repo | 31 self.repo = repo |
33 self.path = os.path.join(repo.join(""), "bisect") | 32 self.path = repo.join("bisect") |
33 self.opener = util.opener(self.path) | |
34 self.ui = ui | 34 self.ui = ui |
35 self.goodrevs = [] | 35 self.goodrevs = [] |
36 self.badrev = None | 36 self.badrev = None |
37 self.good_dirty = 0 | 37 self.good_dirty = 0 |
38 self.bad_dirty = 0 | 38 self.bad_dirty = 0 |
39 self.good_path = os.path.join(self.path, "good") | 39 self.good_path = "good" |
40 self.bad_path = os.path.join(self.path, "bad") | 40 self.bad_path = "bad" |
41 | 41 |
42 s = self.good_path | 42 if os.path.exists(os.path.join(self.path, self.good_path)): |
43 if os.path.exists(s): | 43 self.goodrevs = self.opener(self.good_path).read().splitlines() |
44 self.goodrevs = self.repo.opener(s).read().splitlines() | |
45 self.goodrevs = [hg.bin(x) for x in self.goodrevs] | 44 self.goodrevs = [hg.bin(x) for x in self.goodrevs] |
46 s = self.bad_path | 45 if os.path.exists(os.path.join(self.path, self.bad_path)): |
47 if os.path.exists(s): | 46 r = self.opener(self.bad_path).read().splitlines() |
48 r = self.repo.opener(s).read().splitlines() | |
49 if r: | 47 if r: |
50 self.badrev = hg.bin(r.pop(0)) | 48 self.badrev = hg.bin(r.pop(0)) |
51 | 49 |
52 def __del__(self): | 50 def __del__(self): |
53 if not os.path.isdir(self.path): | 51 if not os.path.isdir(self.path): |
54 return | 52 return |
55 f = self.repo.opener(self.good_path, "w") | 53 f = self.opener(self.good_path, "w") |
56 f.write("\n".join([hg.hex(r) for r in self.goodrevs])) | 54 f.write("\n".join([hg.hex(r) for r in self.goodrevs])) |
57 if len(self.goodrevs) > 0: | 55 if len(self.goodrevs) > 0: |
58 f.write("\n") | 56 f.write("\n") |
59 f = self.repo.opener(self.bad_path, "w") | 57 f = self.opener(self.bad_path, "w") |
60 if self.badrev: | 58 if self.badrev: |
61 f.write(hg.hex(self.badrev) + "\n") | 59 f.write(hg.hex(self.badrev) + "\n") |
62 | 60 |
63 def init(self): | 61 def init(self): |
64 """start a new bisection""" | 62 """start a new bisection""" |
70 return 0 | 68 return 0 |
71 | 69 |
72 def reset(self): | 70 def reset(self): |
73 """finish a bisection""" | 71 """finish a bisection""" |
74 if os.path.isdir(self.path): | 72 if os.path.isdir(self.path): |
75 sl = [self.bad_path, self.good_path] | 73 sl = [os.path.join(self.path, p) |
74 for p in [self.bad_path, self.good_path]] | |
76 for s in sl: | 75 for s in sl: |
77 if os.path.exists(s): | 76 if os.path.exists(s): |
78 os.unlink(s) | 77 os.unlink(s) |
79 os.rmdir(self.path) | 78 os.rmdir(self.path) |
80 # Not sure about this | 79 # Not sure about this |