Edgewall Software

Opened 14 years ago

Last modified 9 months ago

#5515 new defect

Empty changeset causes exception

Reported by: hinton_phil@… Owned by:
Priority: normal Milestone: next-stable-1.4.x
Component: version control/changeset view Version: devel
Severity: normal Keywords: verify
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Christian Boos)


  • Reorganizing project
    • Exported 2 svn repositories, server and client
    • Created new svn repository
    • Created 2 svn folders in new repository, server and client
    • Did import into server and client folders
  • Changed trac.ini to point to new repository, then did resync
  • Browsed to project Timeline to look at changesets
  • When I tried browse to changeset [1], got an internal error
  • Browsing to other changesets worked fine
    • Changeset [2] picked up the new server folder
    • Changeset [3] picked up the new client folder
    • Changeset [4] does not exist ??
    • Changeset [5] picked up import into server folder
    • Changeset [6] picked up import into client folder
  • I searched tickets for "changeset NoneType split" with no hits
  • Search for "changeset NoneType" hit an unrelated ticket

Diagnostic Data

Trac detected an internal error:

AttributeError: 'NoneType' object has no attribute 'split'

Python Traceback
Most recent call last:

    * File "c:\python25\lib\site-packages\Trac-0.11dev_r5661-py2.5.egg\trac\web\main.py", line 432, in dispatch_request
      Code fragment:
       427. if not env and env_error:
       428. raise HTTPInternalError(env_error)
       429. try:
       430. try:
       431. dispatcher = RequestDispatcher(env)
       432. dispatcher.dispatch(req)
       433. except RequestDone:
       434. pass
       435. return req._response or []
       436. finally:
       437. if not run_once:
      Local variables:
      Name	Value
      after 	[' except RequestDone:', ' pass', ' ...
      before 	[' if not env and env_error:', ' raise ...
      dispatcher 	<trac.web.main.RequestDispatcher object at 0x055836F0>
      e 	AttributeError("'NoneType' object has no attribute 'split'",)
      egg_cache 	None
      env 	<trac.env.Environment object at 0x0556AEF0>
      env_error 	None
      env_name 	'sqdb'
      env_parent_dir 	'D:/projects'
      env_path 	'D:/projects\\sqdb'
      env_paths 	None
      environ 	{'HTTP_AUTHORIZATION': 'Basic cGhpbnRvbjplcjFjYTE=', 'wsgi.multiprocess': ...
      exc_info 	(<type 'exceptions.AttributeError'>, AttributeError("'NoneType' object has ...
      filename 	'c:\\python25\\lib\\site-packages\\Trac-0.11dev_r5661-py2.5.egg\\trac\\web\ ...
      frames 	[{'function': 'dispatch_request', 'lines_before': [' if not env and ...
      has_admin 	True
      line 	' dispatcher.dispatch(req)'
      lineno 	431
      message 	u"AttributeError: 'NoneType' object has no attribute 'split'"
      options 	{'TracUriRoot': '/projects', 'TracEnvParentDir': 'D:/projects'}
      path_info 	['changeset', '1']
      req 	<Request "GET u'/changeset/1'">
      request_uri 	'/projects/sqdb/changeset/1'
      root_uri 	'/projects'
      run_once 	False
      script_url 	None
      start_response 	<bound method ModPythonGateway._start_response of ...
      tb 	<traceback object at 0x06E36198>
      tb_hide 	None
      traceback 	'Traceback (most recent call last):\n File ...
    * File "c:\python25\lib\site-packages\Trac-0.11dev_r5661-py2.5.egg\trac\web\main.py", line 217, in dispatch
      Code fragment:
       212. 'Do you have cookies enabled?')
       214. # Process the request and render the template
       215. try:
       216. try:
       217. resp = chosen_handler.process_request(req)
       218. if resp:
       219. if len(resp) == 2: # Clearsilver
       220. chrome.populate_hdf(req)
       221. template, content_type = \
       222. self._post_process_request(req, *resp)
      Local variables:
      Name	Value
      chosen_handler 	<trac.versioncontrol.web_ui.changeset.ChangesetModule object at ...
      chrome 	<trac.web.chrome.Chrome object at 0x055838B0>
      err 	(<type 'exceptions.AttributeError'>, AttributeError("'NoneType' object has ...
      handler 	<trac.versioncontrol.web_ui.changeset.ChangesetModule object at ...
      req 	<Request "GET u'/changeset/1'">
      self 	<trac.web.main.RequestDispatcher object at 0x055836F0>
    * File "c:\python25\lib\site-packages\Trac-0.11dev_r5661-py2.5.egg\trac\versioncontrol\web_ui\changeset.py", line 319, in process_request
      Code fragment:
       314. self._render_diff(req, filename, repos, data)
       315. elif format == 'zip':
       316. self._render_zip(req, filename, repos, data)
       318. # -- HTML format
       319. self._render_html(req, repos, chgset, restricted, xhr, data)
       321. if chgset:
       322. diff_params = 'new=%s' % new
       323. else:
       324. diff_params = unicode_urlencode({'new_path': new_path,
      Local variables:
      Name	Value
      chgset 	<trac.versioncontrol.cache.CachedChangeset object at 0x07019F90>
      data 	{'changeset': <trac.versioncontrol.cache.CachedChangeset object at ...
      diff_data 	{'style': 'inline', 'options': {'ignorecase': 0, 'ignoreblanklines': 0, ...
      format 	None
      new 	1
      new_path 	'/'
      old 	None
      old_path 	None
      options 	['-U2']
      prev 	None
      prev_path 	'/'
      prev_rev 	None
      repos 	<trac.versioncontrol.cache.CachedRepository object at 0x07014D50>
      req 	<Request "GET u'/changeset/1'">
      restricted 	False
      self 	<trac.versioncontrol.web_ui.changeset.ChangesetModule object at ...
      style 	'inline'
      xhr 	False
    * File "c:\python25\lib\site-packages\Trac-0.11dev_r5661-py2.5.egg\trac\versioncontrol\web_ui\changeset.py", line 595, in _render_html
      Code fragment:
       590. info = None
       591. changes.append(info) # the sequence should be immutable
       593. data.update({'has_diffs': has_diffs, 'changes': changes, 'xhr': xhr,
       594. 'filestats': filestats,
       595. 'files': files, 'location': self._get_location(files),
       596. 'longcol': 'Revision', 'shortcol': 'r'})
       598. if xhr: # render and return the content only
       599. stream = Chrome(self.env).render_template(req, 'changeset.html',
       600. data, fragment=True)
      Local variables:
      Name	Value
      _changeset_title 	<function _changeset_title at 0x06F8D470>
      _content_changes 	<function _content_changes at 0x06F17030>
      _estimate_changes 	<function _estimate_changes at 0x06F174F0>
      _prop_changes 	<function _prop_changes at 0x06F17B30>
      annotated 	False
      browser 	<trac.versioncontrol.web_ui.browser.BrowserModule object at 0x05583F70>
      change 	'add'
      changes 	[{'new': {'path': u'', 'href': '/projects/sqdb/browser/?rev=1', 'rev': 1, ...
      chgset 	<trac.versioncontrol.cache.CachedChangeset object at 0x07019F90>
      context 	<Context u'[root], changeset:1' <Request "GET u'/changeset/1'">>
      data 	{'changeset': <trac.versioncontrol.cache.CachedChangeset object at ...
      diff_bytes 	0
      diff_files 	0
      diffs 	[]
      files 	[None]
      filestats 	{'edit': 0, 'delete': 0, 'add': 1, 'copy': 0, 'move': 0}
      get_changes 	<function get_changes at 0x06F8D370>
      has_diffs 	False
      info 	{'new': {'path': u'', 'href': '/projects/sqdb/browser/?rev=1', 'rev': 1, ...
      kind 	'dir'
      new_node 	<trac.versioncontrol.svn_fs.SubversionNode object at 0x06FEBE70>
      next_href 	'/projects/sqdb/changeset/2'
      next_rev 	2
      node_info 	<function node_info at 0x06F174B0>
      old_node 	None
      oldest_rev 	1
      options 	{'ignorecase': 0, 'ignoreblanklines': 0, 'contextlines': 2, ...
      path 	'/'
      props 	[]
      repos 	<trac.versioncontrol.cache.CachedRepository object at 0x07014D50>
      req 	<Request "GET u'/changeset/1'">
      restricted 	False
      rev 	1
      revprops 	{}
      self 	<trac.versioncontrol.web_ui.changeset.ChangesetModule object at ...
      show_diff 	True
      show_diffs 	True
      show_entry 	True
      title 	'Changeset 1'
      xhr 	False
      youngest_rev 	6
    * File "c:\python25\lib\site-packages\Trac-0.11dev_r5661-py2.5.egg\trac\versioncontrol\web_ui\changeset.py", line 732, in _get_location

System Information:

User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20070309 Firefox/
Trac: 0.11dev-r5661
Python: 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]
setuptools: 0.6c6
MySQL: server: "5.0.41-community-nt", client: "5.0.27", thread-safe: 1|
MySQLdb: 1.2.2
Genshi: 0.4.1
Subversion: 1.4.3 (r23084)
jQuery: 1.1.2

Attachments (0)

Change History (6)

comment:1 by Christian Boos, 14 years ago

Component: generalchangeset view
Description: modified (diff)
Milestone: 0.11
Owner: changed from Jonas Borgström to Christian Boos
Version: devel
files 	[None]

comment:2 by Christian Boos, 12 years ago

Keywords: verify added
Milestone: 0.11-retriage0.11.6

comment:3 by Ryan J Ollos, 6 years ago

Milestone: next-minor-0.12.xnext-stable-1.0.x

comment:4 by Ryan J Ollos, 6 years ago

Owner: Christian Boos removed

comment:5 by Ryan J Ollos, 4 years ago

Milestone: next-stable-1.0.xnext-stable-1.2.x

Moved ticket assigned to next-stable-1.0.x since maintenance of 1.0.x is coming to a close. Please move the ticket back if it's critical to fix on 1.0.x.

comment:6 by Ryan J Ollos, 9 months ago

Milestone: next-stable-1.2.xnext-stable-1.4.x

Modify Ticket

Change Properties
Set your email in Preferences
as new The ticket will remain with no owner.
The ticket will be disowned.
as The resolution will be set. Next status will be 'closed'.
The owner will be changed from (none) to anonymous. Next status will be 'assigned'.

Add Comment

E-mail address and name can be saved in the Preferences .
Note: See TracTickets for help on using tickets.