# HG changeset patch # User Jesse Glick # Date 1202578078 18000 # Node ID f3a8b53601000d8c89c65d661a426811ebc21023 # Parent 53ed9b40cfc497c81cea29c457605f66407a2bad Strip filter name from command before passing to filter function. The new registration of in-process data filters (introduced in f8ad3b76e923 & 11af38a592ae) failed to correctly strip the filter name from its arguments before passing the "command" to the filter function. Thus a registration such as [decode] *.gz = compress: -9 would result in the associated filter function being called with the argument 'compress: -9' rather than just '-9' as expected. diff -r 53ed9b40cfc4 -r f3a8b5360100 mercurial/localrepo.py --- a/mercurial/localrepo.py Sat Feb 09 18:38:54 2008 -0200 +++ b/mercurial/localrepo.py Sat Feb 09 12:27:58 2008 -0500 @@ -501,9 +501,11 @@ for pat, cmd in self.ui.configitems(filter): mf = util.matcher(self.root, "", [pat], [], [])[1] fn = None + params = cmd for name, filterfn in self._datafilters.iteritems(): if cmd.startswith(name): fn = filterfn + params = cmd[len(name):].lstrip() break if not fn: fn = lambda s, c, **kwargs: util.filter(s, c) @@ -511,7 +513,7 @@ if not inspect.getargspec(fn)[2]: oldfn = fn fn = lambda s, c, **kwargs: oldfn(s, c) - l.append((mf, fn, cmd)) + l.append((mf, fn, params)) self.filterpats[filter] = l for mf, fn, cmd in self.filterpats[filter]: diff -r 53ed9b40cfc4 -r f3a8b5360100 tests/test-custom-filters --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-custom-filters Sat Feb 09 12:27:58 2008 -0500 @@ -0,0 +1,60 @@ +#!/bin/sh + +hg init + +cat > .hg/hgrc < prefix.py < .hgignore < stuff.txt <> stuff.txt < morestuff.txt <