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.
--- a/hgext/share.py Wed Nov 11 20:43:25 2015 -0500
+++ b/hgext/share.py Wed Nov 11 20:45:38 2015 -0500
@@ -121,7 +121,7 @@
return orig(ui, source, *args, **opts)
def extsetup(ui):
- extensions.wrapfunction(bookmarks.bmstore, 'getbkfile', getbkfile)
+ extensions.wrapfunction(bookmarks, '_getbkfile', getbkfile)
extensions.wrapfunction(bookmarks.bmstore, 'recordchange', recordchange)
extensions.wrapfunction(bookmarks.bmstore, '_writerepo', writerepo)
extensions.wrapcommand(commands.table, 'clone', clone)
@@ -149,12 +149,12 @@
srcurl, branches = parseurl(source)
return repository(repo.ui, srcurl)
-def getbkfile(orig, self, repo):
+def getbkfile(orig, repo):
if _hassharedbookmarks(repo):
srcrepo = _getsrcrepo(repo)
if srcrepo is not None:
repo = srcrepo
- return orig(self, repo)
+ return orig(repo)
def recordchange(orig, self, tr):
# Continue with write to local bookmarks file as usual
--- a/mercurial/bookmarks.py Wed Nov 11 20:43:25 2015 -0500
+++ b/mercurial/bookmarks.py Wed Nov 11 20:45:38 2015 -0500
@@ -22,6 +22,25 @@
util,
)
+def _getbkfile(repo):
+ """Hook so that extensions that mess with the store can hook bm storage.
+
+ For core, this just handles wether we should see pending
+ bookmarks or the committed ones. Other extensions (like share)
+ may need to tweak this behavior further.
+ """
+ bkfile = None
+ if 'HG_PENDING' in os.environ:
+ try:
+ bkfile = repo.vfs('bookmarks.pending')
+ except IOError as inst:
+ if inst.errno != errno.ENOENT:
+ raise
+ if bkfile is None:
+ bkfile = repo.vfs('bookmarks')
+ return bkfile
+
+
class bmstore(dict):
"""Storage for bookmarks.
@@ -41,7 +60,7 @@
dict.__init__(self)
self._repo = repo
try:
- bkfile = self.getbkfile(repo)
+ bkfile = _getbkfile(repo)
for line in bkfile:
line = line.strip()
if not line:
@@ -60,24 +79,6 @@
if inst.errno != errno.ENOENT:
raise
- def getbkfile(self, repo):
- """Hook so that extensions that mess with the store can hook bm storage.
-
- For core, this just handles wether we should see pending
- bookmarks or the committed ones. Other extensions (like share)
- may need to tweak this behavior further.
- """
- bkfile = None
- if 'HG_PENDING' in os.environ:
- try:
- bkfile = repo.vfs('bookmarks.pending')
- except IOError as inst:
- if inst.errno != errno.ENOENT:
- raise
- if bkfile is None:
- bkfile = repo.vfs('bookmarks')
- return bkfile
-
def recordchange(self, tr):
"""record that bookmarks have been changed in a transaction