Really, the makemessages management command ignores only project root
files having file names like these.
As a result, the makemessages makes such unexpected things like walking
through all .svn directories except root, or trying to analyze binary Mac
OS X - specific file descriptors like '._adminoverride.js'
The reason for such inconsistency is a function is_ignored() defined in
the makemessages.py.
While the django 1.5 declares this function in a module context, the
current trunk defines it in a context of the find_files() function (it is
not important, but makes creating ready-to-use patch harder).
Anyway, the only line required to be fixed is:
{{{
if fnmatch.fnmatchcase(path, pattern):
}}}
which should be replaced by:
{{{
if fnmatch.fnmatchcase(os.path.split(path)[-1], pattern):
}}}
This simple change makes makemessages command working with ignore patterns
as expected.
The applied patch has been created for django version 1.5.1-final:
{{{
>>> import django
>>> django.VERSION
(1, 5, 1, 'final', 0)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20422>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* cc: bmispelon@… (added)
* needs_docs: => 0
* needs_better_patch: => 0
* needs_tests: => 0
* stage: Unreviewed => Accepted
Comment:
Hi,
I added some tests and rewrote the `is_ignored` function a bit (using the
builtin `any` instead of the loop).
I made a pull request out of it:
https://github.com/django/django/pull/1076
Thank you for the report and the original patch.
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:1>
* owner: nobody => claudep
* status: new => assigned
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:2>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"9012a9e2000020493b881a5b79cc801c62180796"]:
{{{
#!CommitTicketReference repository=""
revision="9012a9e2000020493b881a5b79cc801c62180796"
Fixed #20422 -- Applied makemessage's --ignore patterns to full path
Fix makemessage's --ignore patterns being applied to the full path
instead of the file name. Thanks to nnseva for the report and the
original patch.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:3>
* status: closed => new
* needs_better_patch: 0 => 1
* version: 1.5 => 1.6
* resolution: fixed =>
Comment:
Unfortunately the assumption that "file NAME like these patterns, should
be ignored" was not correct. According to the documentation the --ignore
pattern should "ignore files or directories matching"
(https://docs.djangoproject.com/en/1.6/ref/django-admin/#django-admin-
option---ignore)
The example given in the docs actually uses patterns with paths:
{{{django-admin.py makemessages --locale=en_US --ignore=apps/*
--ignore=secret/*.html}}}
The applied patch breaks this behaviour by using {{{filename =
os.path.basename(path)}}}
Being able to exclude paths is important to eg. easily exclude certain
apps in a project from translation.
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:4>
* needs_better_patch: 1 => 0
* version: 1.6 => 1.5
Comment:
Could you please open a new ticket as the fix for this one has already
been released? Thanks.
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:5>
* status: new => closed
* resolution: => fixed
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:6>
Comment (by infraredgirl):
I opened a new ticket for this regression:
https://code.djangoproject.com/ticket/22336
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:7>
Comment (by Ramiro Morales <ramiro@…>):
In [changeset:"b4dce7c37ab7666b023ac791d2c46dad6c8aa637"]:
{{{
#!CommitTicketReference repository=""
revision="b4dce7c37ab7666b023ac791d2c46dad6c8aa637"
Fixed #23298 -- Made makemessages actually ignore specified dirs on
Windows.
This was detected by two failures in the i18n.test_extraction of our
test suite.
Refs #20422, refs #22336
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:8>
Comment (by Tim Graham <timograham@…>):
In [changeset:"126606c5b8499830cd56cbe632f6af17bc7471ea"]:
{{{
#!CommitTicketReference repository=""
revision="126606c5b8499830cd56cbe632f6af17bc7471ea"
[1.7.x] Fixed #23298 -- Made makemessages actually ignore specified dirs
on Windows.
This was detected by two failures in the i18n.test_extraction of our
test suite.
Refs #20422, refs #22336
Backport of b4dce7c37a from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:9>