Mercurial > hg
comparison mercurial/bookmarks.py @ 27186:34d26e22a2b0
bookmarks: hoist getbkfile out of bmstore class
It's totally fine that this hook exists, but I don't see a need for it
to live inside the bmstore class.
author | Augie Fackler <augie@google.com> |
---|---|
date | Wed, 11 Nov 2015 20:45:38 -0500 |
parents | d52765831086 |
children | d9dcc5c09d77 |
comparison
equal
deleted
inserted
replaced
27185:d52765831086 | 27186:34d26e22a2b0 |
---|---|
20 lock as lockmod, | 20 lock as lockmod, |
21 obsolete, | 21 obsolete, |
22 util, | 22 util, |
23 ) | 23 ) |
24 | 24 |
25 def _getbkfile(repo): | |
26 """Hook so that extensions that mess with the store can hook bm storage. | |
27 | |
28 For core, this just handles wether we should see pending | |
29 bookmarks or the committed ones. Other extensions (like share) | |
30 may need to tweak this behavior further. | |
31 """ | |
32 bkfile = None | |
33 if 'HG_PENDING' in os.environ: | |
34 try: | |
35 bkfile = repo.vfs('bookmarks.pending') | |
36 except IOError as inst: | |
37 if inst.errno != errno.ENOENT: | |
38 raise | |
39 if bkfile is None: | |
40 bkfile = repo.vfs('bookmarks') | |
41 return bkfile | |
42 | |
43 | |
25 class bmstore(dict): | 44 class bmstore(dict): |
26 """Storage for bookmarks. | 45 """Storage for bookmarks. |
27 | 46 |
28 This object should do all bookmark reads and writes, so that it's | 47 This object should do all bookmark reads and writes, so that it's |
29 fairly simple to replace the storage underlying bookmarks without | 48 fairly simple to replace the storage underlying bookmarks without |
39 | 58 |
40 def __init__(self, repo): | 59 def __init__(self, repo): |
41 dict.__init__(self) | 60 dict.__init__(self) |
42 self._repo = repo | 61 self._repo = repo |
43 try: | 62 try: |
44 bkfile = self.getbkfile(repo) | 63 bkfile = _getbkfile(repo) |
45 for line in bkfile: | 64 for line in bkfile: |
46 line = line.strip() | 65 line = line.strip() |
47 if not line: | 66 if not line: |
48 continue | 67 continue |
49 if ' ' not in line: | 68 if ' ' not in line: |
57 except LookupError: | 76 except LookupError: |
58 pass | 77 pass |
59 except IOError as inst: | 78 except IOError as inst: |
60 if inst.errno != errno.ENOENT: | 79 if inst.errno != errno.ENOENT: |
61 raise | 80 raise |
62 | |
63 def getbkfile(self, repo): | |
64 """Hook so that extensions that mess with the store can hook bm storage. | |
65 | |
66 For core, this just handles wether we should see pending | |
67 bookmarks or the committed ones. Other extensions (like share) | |
68 may need to tweak this behavior further. | |
69 """ | |
70 bkfile = None | |
71 if 'HG_PENDING' in os.environ: | |
72 try: | |
73 bkfile = repo.vfs('bookmarks.pending') | |
74 except IOError as inst: | |
75 if inst.errno != errno.ENOENT: | |
76 raise | |
77 if bkfile is None: | |
78 bkfile = repo.vfs('bookmarks') | |
79 return bkfile | |
80 | 81 |
81 def recordchange(self, tr): | 82 def recordchange(self, tr): |
82 """record that bookmarks have been changed in a transaction | 83 """record that bookmarks have been changed in a transaction |
83 | 84 |
84 The transaction is then responsible for updating the file content.""" | 85 The transaction is then responsible for updating the file content.""" |