localrepo: refactor prepushoutgoinghook to take a pushop
prepushoutgoinghook was introduced in
6c383c871fdb and largefiles is the only
in-tree use of it. Refactor it to be more useful for other use cases in
largefiles.
--- a/hgext/largefiles/reposetup.py Tue Mar 29 00:08:25 2016 +0900
+++ b/hgext/largefiles/reposetup.py Wed Apr 13 01:09:11 2016 +0200
@@ -352,12 +352,13 @@
# is used to write status out.
repo._lfstatuswriters = [ui.status]
- def prepushoutgoinghook(local, remote, outgoing):
- if outgoing.missing:
+ def prepushoutgoinghook(pushop):
+ if pushop.outgoing.missing:
toupload = set()
addfunc = lambda fn, lfhash: toupload.add(lfhash)
- lfutil.getlfilestoupload(local, outgoing.missing, addfunc)
- lfcommands.uploadlfiles(ui, local, remote, toupload)
+ lfutil.getlfilestoupload(pushop.repo, pushop.outgoing.missing,
+ addfunc)
+ lfcommands.uploadlfiles(ui, pushop.repo, pushop.remote, toupload)
repo.prepushoutgoinghooks.add("largefiles", prepushoutgoinghook)
def checkrequireslfiles(ui, repo, **kwargs):
--- a/mercurial/exchange.py Tue Mar 29 00:08:25 2016 +0900
+++ b/mercurial/exchange.py Wed Apr 13 01:09:11 2016 +0200
@@ -694,9 +694,7 @@
# Send known heads to the server for race detection.
if not _pushcheckoutgoing(pushop):
return
- pushop.repo.prepushoutgoinghooks(pushop.repo,
- pushop.remote,
- pushop.outgoing)
+ pushop.repo.prepushoutgoinghooks(pushop)
_pushb2ctxcheckheads(pushop, bundler)
@@ -884,9 +882,7 @@
pushop.stepsdone.add('changesets')
if not _pushcheckoutgoing(pushop):
return
- pushop.repo.prepushoutgoinghooks(pushop.repo,
- pushop.remote,
- pushop.outgoing)
+ pushop.repo.prepushoutgoinghooks(pushop)
outgoing = pushop.outgoing
unbundle = pushop.remote.capable('unbundle')
# TODO: get bundlecaps from remote
--- a/mercurial/localrepo.py Tue Mar 29 00:08:25 2016 +0900
+++ b/mercurial/localrepo.py Wed Apr 13 01:09:11 2016 +0200
@@ -1887,8 +1887,8 @@
@unfilteredpropertycache
def prepushoutgoinghooks(self):
- """Return util.hooks consists of "(repo, remote, outgoing)"
- functions, which are called before pushing changesets.
+ """Return util.hooks consists of a pushop with repo, remote, outgoing
+ methods, which are called before pushing changesets.
"""
return util.hooks()