Modify

Opened 6 years ago

Last modified 6 years ago

#4089 new defect

Complex repository layout: defining the branch regular expression string

Reported by: trac@… Owned by: eblot
Priority: normal Component: RevtreePlugin
Severity: normal Keywords:
Cc: Trac Release: 0.11

Description

Description

I want to use the plugin, but we have the following repo layout which produces an error. I tried to understand the regex for custom layout but failed, perhaps you can help me.

Repo layout

+--+ app1
|  |
|  +--+ project_1
|  |  +--+ trunk
|  |  +--+ branches
|  |  +--+ tags
|  |
|  +--+ project_2
|     +--+ trunk
|     +--+ branches
|     +--+ tags
|
+--+ app2
|  |
|  +--+ project_1
|  |  +--+ trunk
|  |  +--+ branches
|  |  +--+ tags
|  |
|  +--+ project_2
|     +--+ trunk
|     +--+ branches
|     +--+ tags

Error Trace

Internal Error - StopIteration

    *    File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/web/main.py", line 423, in  _dispatch_request
      Code fragment:
       418. try:
       419. if not env and env_error:
       420. raise HTTPInternalError(env_error)
       421. try:
       422. dispatcher = RequestDispatcher(env)
       423. dispatcher.dispatch(req)
       424. except RequestDone:
       425. pass
       426. resp = req._response or []
       427.  
       428. except HTTPException, e:
      Local variables:
      Name	Value
      after 	[u' except RequestDone:', u' pass', u' resp = ...
      before 	[u' try:', u' if not env and env_error:', u' raise ...
      dispatcher 	<trac.web.main.RequestDispatcher object at 0x955de0c>
      e 	StopIteration()
      env 	<trac.env.Environment object at 0x8ebe50c>
      env_error 	None
      exc_info 	(<type 'exceptions.StopIteration'>, StopIteration(), <traceback object at ...
      filename 	'/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/web/main.py'
      frames 	[{'function': '_dispatch_request', 'lines_before': [u' try:', u' ...
      has_admin 	True
      line 	u' dispatcher.dispatch(req)'
      lineno 	422
      message 	u'StopIteration: '
      req 	<Request "GET u'/revtree'">
      resp 	[]
      tb 	<traceback object at 0x91af25c>
      tb_hide 	None
      traceback 	'Traceback (most recent call last):\n File ...
    * File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/web/main.py", line 197, in dispatch
      Code fragment:
       192. req.args.get('__FORM_TOKEN') != req.form_token:
       193. raise HTTPBadRequest('Missing or invalid form token. '
       194. 'Do you have cookies enabled?')
       195.  
       196. # Process the request and render the template
       197. resp = chosen_handler.process_request(req)
       198. if resp:
       199. if len(resp) == 2: # Clearsilver
       200. chrome.populate_hdf(req)
       201. template, content_type = \
       202. self._post_process_request(req, *resp)
      Local variables:
      Name	Value
      chosen_handler 	<revtree.web_ui.RevtreeModule object at 0x955dcec>
      chrome 	<trac.web.chrome.Chrome object at 0x955de2c>
      err 	(<type 'exceptions.StopIteration'>, StopIteration(), <traceback object at ...
      handler 	<revtree.web_ui.RevtreeModule object at 0x955dcec>
      req 	<Request "GET u'/revtree'">
      self 	<trac.web.main.RequestDispatcher object at 0x955de0c>
    * File "build/bdist.linux-i686/egg/revtree/web_ui.py", line 246, in process_request
      Local variables:
      Name	Value
      req 	<Request "GET u'/revtree'">
      self 	<revtree.web_ui.RevtreeModule object at 0x955dcec>
    * File "build/bdist.linux-i686/egg/revtree/web_ui.py", line 356, in _process_revtree
      Local variables:
      Name	Value
      authors 	[]
      branches 	[]
      data 	{'style': u'compact', 'limits': 'limperiod', 'author': 'gruenebe', ...
      hidetermbranch 	True
      oldest 	1
      repos 	<revtree.model.Repository object at 0x96b18cc>
      req 	<Request "GET u'/revtree'">
      revstore 	<revtree.web_ui.RevtreeStore object at 0x8e1230c>
      sauthors 	['gruenebe']
      sbranches 	None
      self 	<revtree.web_ui.RevtreeModule object at 0x955dcec>
      svgrevtree 	<revtree.svgview.SvgRevtree object at 0x907616c>
      timebase 	1226583495
      tracrepos 	<trac.versioncontrol.cache.CachedRepository object at 0x903784c>
      youngest 	4096
    * File "build/bdist.linux-i686/egg/revtree/model.py", line 434, in build
      Local variables:
      Name	Value
      bcre 	<_sre.SRE_Pattern object at 0x8cbe2c0>
      c 	<trac.versioncontrol.cache.CachedChangeset object at 0x9aa32ac>
      chgset 	None
      dtstart 	datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<FixedOffset "UTC" 0:00:00>)
      dtstop 	datetime.datetime(2008, 11, 13, 13, 38, 15, tzinfo=<FixedOffset "UTC" ...
      info 	{'kind': 'file', 'base_rev': u'1765', 'base_path': ...
      mo 	None
      mo_dict 	{u'path': None, u'branchname': None, u'tag': None, u'branch': u'trunk', ...
      rev 	1765
      revmax 	4096
      revmin 	1
      revrange 	(1, 4096)
      self 	<revtree.model.Repository object at 0x96b18cc>
      start 	0
      stop 	1226583495
      timerange 	None
      vc 	<trac.versioncontrol.cache.CachedChangeset object at 0x99f18ac>
      vcchangesets 	<generator object at 0x96b196c>
      vcsort 	[(4096, <trac.versioncontrol.cache.CachedChangeset object at 0x92ce46c>), ...
    * File "build/bdist.linux-i686/egg/revtree/model.py", line 51, in get_chgset_info
      Local variables:
      Name	Value
      chgit 	<generator object at 0x92c7f2c>
      tracchgset 	<trac.versioncontrol.cache.CachedChangeset object at 0x99f18ac>

File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/web/main.py", line 423, in _dispatch_request
  dispatcher.dispatch(req)
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/web/main.py", line 197, in dispatch
  resp = chosen_handler.process_request(req)
File "build/bdist.linux-i686/egg/revtree/web_ui.py", line 246, in process_requestFile "build/bdist.linux-i686/egg/revtree/web_ui.py", line 356, in _process_revtreeFile "build/bdist.linux-i686/egg/revtree/model.py", line 434, in buildFile "build/bdist.linux-i686/egg/revtree/model.py", line 51, in get_chgset_info

System Information:

User Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1
Trac: 	0.11.1
Python: 	2.5.2 (r252:60911, Jul 31 2008, 17:44:49) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]
setuptools: 	0.6c8
MySQL: 	server: "5.0.51a-3ubuntu5.1", client: "5.0.51a", thread-safe: 0
MySQLdb: 	1.2.2
Genshi: 	0.5.1
mod_python: 	3.3.1
Subversion: 	1.4.6 (r28521)
jQuery:	1.2.6

Attachments (1)

multiprojectlayout.png (11.1 KB) - added by eblot 6 years ago.
Multiproject repository layout view example

Download all attachments as: .zip

Change History (4)

comment:1 in reply to: ↑ description Changed 6 years ago by eblot

  • Summary changed from internal error -> StopIteration -> complex repository layout to Complex repository layout: defining the branch regular expression string

Replying to trac@grunewaldt.net:

I want to use the plugin, but we have the following repo layout which produces an error. I tried to understand the regex for custom layout but failed, perhaps you can help me.

Try the following regular expression:

branch_re = ^(?P<branch>[^/]+/[^/]+/(?:(?:tags|branches)/[^/]+|trunk))(?:/(?P<path>.*))?$

or if you want to get shorten the branch name and you can afford masking the application name

branch_re = ^(?P<branch>[^/]+/(?P<branchname>[^/]+/(?:(?:tags|branches)/[^/]+|trunk)))(?:/(?P<path>.*))?$

Changed 6 years ago by eblot

Multiproject repository layout view example

comment:2 Changed 6 years ago by eblot

See attached snapshot
Multiproject repository layout view example

Note that the second RE as defined in the previous comment requires a 0.6.x plugin.

comment:3 Changed 6 years ago by anonymous

eblot could you please provide an explanation for the branch_re in the plugin wiki page, I think it would be very useful for people like us who have complex repository structures, because AFAIK there is no place where the purpose of the regexp is explained.

Thanks.

Add Comment

Modify Ticket

Action
as new The owner will remain eblot.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.