# HG changeset patch # User FUJIWARA Katsunori # Date 2014-11-05 14:24:47 # Node ID 6de61d0b773f912010d137efc78cc47409c06d71 # Parent 9870173e0b4888c5629390b35f5173ce5abee43d largefiles: introduce "_lfcommithooks" to abstract pre-committing procedures This changes allows to customize pre-committing procedures according to conditions. 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 --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py --- a/hgext/largefiles/reposetup.py +++ b/hgext/largefiles/reposetup.py @@ -262,7 +262,8 @@ def reposetup(ui, repo): wlock = self.wlock() try: - match = lfutil.updatestandinsbymatch(self, match) + lfcommithook = self._lfcommithooks[-1] + match = lfcommithook(self, match) result = orig(text=text, user=user, date=date, match=match, force=force, editor=editor, extra=extra) return result @@ -338,6 +339,10 @@ def reposetup(ui, repo): repo.__class__ = lfilesrepo + # stack of hooks being executed before committing. + # only last element ("_lfcommithooks[-1]") is used for each committing. + repo._lfcommithooks = [lfutil.updatestandinsbymatch] + def prepushoutgoinghook(local, remote, outgoing): if outgoing.missing: toupload = set()