# HG changeset patch # User FUJIWARA Katsunori # Date 1415197487 -32400 # Node ID 94ac64bcf6fe91022a11a1709de8dbc671c12a4f # Parent f726b05ecfe682b2cf4d5baee73903bc2c889f87 largefiles: introduce "_lfstatuswriters" to customize status reporting "lfutil.getstatuswriter" is the utility to get appropriate function to write largefiles specific status out from "repo._lfstatuswriters". This patch uses "stack" with an element instead of flag like "_isXXXXing" or so, because: - the former works correctly even when customizations are nested, and - ensuring at least one element can ignore empty check diff -r f726b05ecfe6 -r 94ac64bcf6fe hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Wed Nov 05 23:24:47 2014 +0900 +++ b/hgext/largefiles/lfutil.py Wed Nov 05 23:24:47 2014 +0900 @@ -557,3 +557,20 @@ return updatestandinsbymatch(repo, match) else: return match + +def getstatuswriter(ui, repo, forcibly=None): + '''Return the function to write largefiles specific status out + + If ``forcibly`` is ``None``, this returns the last element of + ``repo._lfupdatereporters`` as "default" writer function. + + Otherwise, this returns the function to always write out (or + ignore if ``not forcibly``) status. + ''' + if forcibly is None: + return repo._lfstatuswriters[-1] + else: + if forcibly: + return ui.status # forcibly WRITE OUT + else: + return lambda *msg, **opts: None # forcibly IGNORE diff -r f726b05ecfe6 -r 94ac64bcf6fe hgext/largefiles/reposetup.py --- a/hgext/largefiles/reposetup.py Wed Nov 05 23:24:47 2014 +0900 +++ b/hgext/largefiles/reposetup.py Wed Nov 05 23:24:47 2014 +0900 @@ -343,6 +343,11 @@ # only last element ("_lfcommithooks[-1]") is used for each committing. repo._lfcommithooks = [lfutil.updatestandinsbymatch] + # Stack of status writer functions taking "*msg, **opts" arguments + # like "ui.status()". Only last element ("_lfupdatereporters[-1]") + # is used to write status out. + repo._lfstatuswriters = [ui.status] + def prepushoutgoinghook(local, remote, outgoing): if outgoing.missing: toupload = set()