On Wed, Jun 05, 2013 at 03:19:18PM -0400, Andrew Gregory wrote:
On 06/05/13 at 03:10pm, Patrick Steinhardt wrote:
On Wed, Jun 05, 2013 at 10:28:25PM +1000, Allan McRae wrote:
On 05/06/13 16:16, Andrew Gregory wrote:
I tend to think that the particular problem at issue here would be better solved by a negation operator ala gitignore:
NoExtract = usr/share/locale/* !usr/share/locale/en_US/*
I like this idea.
How would you ignore all but two files in this directory then?
NoExtract = !usr/share/locale/en_US/* !usr/share/locale/locale.alias
One problem that comes to my mind: the first inverse match already includes locale.alias and as such it would not be extracted. The second term would exclude locale.alias but include en_US/*.
Currently we abort as soon as the first expression (whether it is PCRE or fnmatch) matches. If we do it like that we would need to always iterate over all entries in NoExtract and check if a later occurence of the same file exists that overwrites previous occurences. _If_ a later term matches again it is unclear as to what to do, as stated above.
I would simply have the last match win. It's simple, flexible, and we can still abort as soon as we find a match if we just check them in reverse order. So you could do what you want with:
NoExtract = usr/share/locale/* NoExtract = !usr/share/locale/en_US/* NoExtract = !usr/share/locale/locale.alias
usr/share/locale/locale.alias already matches en_US/*.
apg