У нас с Гвидо произошел спор. Он конечно пока об этом не знает, да и я не знал до последнего момента. Но как в последствии оказалось именно его участие решило одну неприятную проблему.
Действующих лиц было много:
- Google App Engine
- Mandarin (за авторством Гвидо ван Россума)
- Django
- Subversion
- App Engine helper for Django
- Eclipse
- Diff
Но вместо былинного эпоса на 10 страниц скажу только о завязке и развязке.
Завязка началась с того, что в GAE SDK входит Django слегка ветхой версии (0.96) в наш век прогресса не доставляет той радости которую могла бы.
Но при этом
open source версия продукта с названием сочного фрукта прекрасно обходится последней версией (да еще и из trunk'а) этого продукта. Пытаясь повторить подвиг, я сделал все по инструкции. Но вместо желанной страницы мне локальная версия начала выдавать совершенно непонятную версию об ошибке, заканчивающуюся очень странным приговором:
....
File "/Users/xen/workspace/GoogleApps/seopad/django/conf/global_settings.py", line 290, in
URL_VALIDATOR_USER_AGENT = "Django/%s (http://www.djangoproject.com)" % get_version()
File "/Users/xen/workspace/GoogleApps/seopad/django/__init__.py", line 14, in get_version
svn_rev = get_svn_revision()
File "/Users/xen/workspace/GoogleApps/seopad/django/utils/version.py", line 23, in get_svn_revision
entries = open(entries_path, 'r').read()
File "/Users/xen/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/
tools/dev_appserver.py", line 915, in __init__
raise IOError(errno.EACCES, 'file not accessible')
Понятное дело ошибка в убогом
/django/utils/version.py который живет в прошлом (или все таки будущем?) и не знает о том, что формат файла
django/.svn/entries тот еще мутант. И вообще это внутреннее дело системы контроля версий в каком формате хранить внутренние файлы.
Первый соблазн был исправить файл, пусть возвращает "незнама шо" сразу. Но я почему-то решил, раз Гвидо запустил без этого, то и я могу. Все же чужой код как-никак святое и некрасивые хаки не наш путь. Тем более что Django в
rietveld берется из транка.
...Вот diff гвидовского и чистого файла:
loremaster:seopad xen$ diff version.orig.py version.guido-kun.py
16a17
> return u'SVN-unknown'
Тоесть вместо всех этих парсингов сразу возвращается строка.
Очень некрасиво.
Кстати, наверное и обычные Django проекты не должны работать. FAIL? Или они уже исправили?