id	summary	reporter	owner	description	type	status	priority	component	severity	resolution	keywords	cc	release
5357	UnicodeDecodeError on UTF-8 encoded filenames	spoke	anonymous	I just try the plugin version 0.11 on trac 0.11.1, 0.11.5 and trunk, and I allways get this error: \r\n\r\nPlease, note that trac works fine if using SVN as backend.\r\n\r\n{{{\r\nTrac detected an internal error:\r\n\r\nProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.\r\n}}}\r\n\r\n{{{\r\nMost recent call last:\r\n\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/web/main.py", line 464, in _dispatch_request\r\n      Code fragment:\r\n       459. try:\r\n       460. if not env and env_error:\r\n       461. raise HTTPInternalError(env_error)\r\n       462. try:\r\n       463. dispatcher = RequestDispatcher(env)\r\n       464. dispatcher.dispatch(req)\r\n       465. except RequestDone:\r\n       466. pass\r\n       467. resp = req._response or []\r\n       468.  \r\n       469. except HTTPException, e:\r\n      Local variables:\r\n      Name_Value\r\n      after _[u' except RequestDone:', u' pass', u' resp = ...\r\n      before _[u' try:', u' if not env and env_error:', u' raise ...\r\n      dispatcher _<trac.web.main.RequestDispatcher object at 0x8bb984c>\r\n      e _ProgrammingError('You must not use 8-bit bytestrings unless you use a ...\r\n      env _<trac.env.Environment object at 0x875060c>\r\n      env_error _None\r\n      exc_info _(<class 'pysqlite2.dbapi2.ProgrammingError'>, ProgrammingError('You must ...\r\n      filename _'/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/web/mai ...\r\n      frames _[{'function': '_dispatch_request', 'lines_before': [u' try:', u' ...\r\n      has_admin _True\r\n      line _u' dispatcher.dispatch(req)'\r\n      lineno _463\r\n      message _u'ProgrammingError: You must not use 8-bit bytestrings unless you use a ...\r\n      req _<Request "GET u'/login'">\r\n      resp _[]\r\n      tb _<traceback object at 0x8e09694>\r\n      tb_hide _None\r\n      traceback _u'Traceback (most recent call last):\\n File ...\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/web/main.py", line 181, in dispatch\r\n      Code fragment:\r\n       176. if not req.path_info or req.path_info == '/':\r\n       177. chosen_handler = self.default_handler\r\n       178. # pre-process any incoming request, whether a handler\r\n       179. # was found or not\r\n       180. chosen_handler = self._pre_process_request(req,\r\n       181. chosen_handler)\r\n       182. except TracError, e:\r\n       183. raise HTTPInternalError(e)\r\n       184. if not chosen_handler:\r\n       185. if req.path_info.endswith('/'):\r\n       186. # Strip trailing / and redirect\r\n      Local variables:\r\n      Name_Value\r\n      chosen_handler _<trac.web.auth.LoginModule object at 0x8bb9bac>\r\n      chrome _<trac.web.chrome.Chrome object at 0x8b6de4c>\r\n      err _(<class 'pysqlite2.dbapi2.ProgrammingError'>, ProgrammingError('You must ...\r\n      handler _<trac.web.auth.LoginModule object at 0x8bb9bac>\r\n      req _<Request "GET u'/login'">\r\n      self _<trac.web.main.RequestDispatcher object at 0x8bb984c>\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/web/main.py", line 317, in _pre_process_request\r\n      Code fragment:\r\n       312. req.outcookie['trac_form_token']['secure'] = True\r\n       313. return req.outcookie['trac_form_token'].value\r\n       314.  \r\n       315. def _pre_process_request(self, req, chosen_handler):\r\n       316. for filter_ in self.filters:\r\n       317. chosen_handler = filter_.pre_process_request(req, chosen_handler)\r\n       318. return chosen_handler\r\n       319.  \r\n       320. def _post_process_request(self, req, *args):\r\n       321. nbargs = len(args)\r\n       322. resp = args\r\n      Local variables:\r\n      Name_Value\r\n      chosen_handler _<trac.web.auth.LoginModule object at 0x8bb9bac>\r\n      filter_ _<trac.versioncontrol.api.RepositoryManager object at 0x8bb9dac>\r\n      req _<Request "GET u'/login'">\r\n      self _<trac.web.main.RequestDispatcher object at 0x8bb984c>\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/versioncontrol/api.py", line 86, in pre_process_request\r\n      Code fragment:\r\n        81.  \r\n        82. def pre_process_request(self, req, handler):\r\n        83. from trac.web.chrome import Chrome, add_warning\r\n        84. if handler is not Chrome(self.env):\r\n        85. try:\r\n        86. self.get_repository(req.authname).sync()\r\n        87. except TracError, e:\r\n        88. add_warning(req, _("Can't synchronize with the repository "\r\n        89. "(%(error)s). Look in the Trac log for more "\r\n        90. "information.", error=to_unicode(e.message)))\r\n        91.\r\n      Local variables:\r\n      Name_Value\r\n      Chrome _<class 'trac.web.chrome.Chrome'>\r\n      add_warning _<function add_warning at 0x8803b54>\r\n      handler _<trac.web.auth.LoginModule object at 0x8bb9bac>\r\n      req _<Request "GET u'/login'">\r\n      self _<trac.versioncontrol.api.RepositoryManager object at 0x8bb9dac>\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/versioncontrol/cache.py", line 213, in sync\r\n      Code fragment:\r\n       208. cursor.execute("INSERT INTO node_change "\r\n       209. " (rev,path,node_type,change_type, "\r\n       210. " base_path,base_rev) "\r\n       211. "VALUES (%s,%s,%s,%s,%s,%s)",\r\n       212. (str(next_youngest),\r\n       213. path, kind, action, bpath, brev))\r\n       214.  \r\n       215. # 1.3. iterate (1.1 should always succeed now)\r\n       216. self.youngest = next_youngest\r\n       217. next_youngest = self.repos.next_rev(next_youngest)\r\n       218.  \r\n      Local variables:\r\n      Name_Value\r\n      action _'A'\r\n      actionmap _{'edit': 'E', 'add': 'A', 'move': 'M', 'copy': 'C', 'delete': 'D'}\r\n      authz _<trac.versioncontrol.api.Authorizer object at 0x8d89bac>\r\n      bpath _''\r\n      brev _None\r\n      cset _<tracext.git.git_fs.GitChangeset object at 0x8cf0aac>\r\n      cursor _<trac.db.util.IterableCursor object at 0x8e3f12c>\r\n      db _<trac.db.pool.PooledConnection object at 0x8e0984c>\r\n      feedback _None\r\n      key _'youngest_rev'\r\n      kind _'F'\r\n      kindmap _{'file': 'F', 'dir': 'D'}\r\n      metadata _{u'youngest_rev': u'', u'repository_dir': u'git:/home/www/git/test/.git'}\r\n      name _u'youngest_rev'\r\n      next_youngest _'b4c60abd772d7c8192b8cf3f46d44978eccdc7b0'\r\n      path _'doc/analysis/Metodolog\\xc3\\x83\\xc2\\xada de almacenamiento de datos en el ...\r\n      repos_youngest _'73f1a95e8d2a161987c16d56cb223e40666ee63b'\r\n      repository_dir _u'git:/home/www/git/test/.git'\r\n      self _<tracext.git.git_fs.CachedRepository2 object at 0x8d5a0ec>\r\n      value _u''\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/db/util.py", line 59, in execute\r\n      Code fragment:\r\n        54. return self.cursor.execute(sql)\r\n        55. except Exception, e:\r\n        56. self.log.debug('execute exception: %r', e)\r\n        57. raise\r\n        58. if args:\r\n        59. return self.cursor.execute(sql_escape_percent(sql), args)\r\n        60. return self.cursor.execute(sql)\r\n        61.  \r\n        62. def executemany(self, sql, args=None):\r\n        63. if self.log:\r\n        64. self.log.debug('SQL: %r', sql)\r\n      Local variables:\r\n      Name_Value\r\n      args _('b4c60abd772d7c8192b8cf3f46d44978eccdc7b0', ...\r\n      self _<trac.db.util.IterableCursor object at 0x8e3f12c>\r\n      sql _'INSERT INTO node_change (rev,path,node_type,change_type, ...\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/db/sqlite_backend.py", line 59, in execute\r\n      Code fragment:\r\n        54. raise\r\n        55. def execute(self, sql, args=None):\r\n        56. if args:\r\n        57. sql = sql % (('?',) * len(args))\r\n        58. return self._rollback_on_error(sqlite.Cursor.execute, sql,\r\n        59. args or [])\r\n        60. def executemany(self, sql, args=None):\r\n        61. if args:\r\n        62. sql = sql % (('?',) * len(args[0]))\r\n        63. return self._rollback_on_error(sqlite.Cursor.executemany, sql,\r\n        64. args or [])\r\n      Local variables:\r\n      Name_Value\r\n      args _('b4c60abd772d7c8192b8cf3f46d44978eccdc7b0', ...\r\n      self _<trac.db.sqlite_backend.PyFormatCursor object at 0x880a2fc>\r\n      sql _'INSERT INTO node_change (rev,path,node_type,change_type, ...\r\n    * File "/usr/lib/python2.5/site-packages/Trac-0.12dev_r8263-py2.5.egg/trac/db/sqlite_backend.py", line 51, in _rollback_on_error \r\n}}}	defect	reopened	highest	GitPlugin	blocker			xelnor	0.12
