1286: Starting/Trailing space in the repository url prevents commiting reviews to ALL repositories

yer***@gmai***** (Google Code) (Is this you? Claim this profile.)
chipx86
chipx86
Sept. 12, 2009
What version are you running?
1.0.1

What's the URL of the page containing the problem?
http://###################/r/new/

What steps will reproduce the problem?
1. Create repository, add trailing (or starting) space
2. Try to create new review request
3. Fail

Fix Suggestions: 
1. Perform this check during submitting repository
2. Trim repository name
3. Both :)

What is the expected output? What do you see instead?
I expected the review interface, instead I see error page (see details below)

What operating system are you using? What browser?
Client: Windows Vista, Firefox 3.
Server: Solaris

Please provide any additional information below.

Error page text:

RepoError at /r/new/

repository  ################ not found

Request Method: 	POST
Request URL: 	http://################/r/new/
Exception Type: 	RepoError
Exception Value: 	

repository  ################### not found

Exception Location: 
/usr/local/lib/python2.6/dist-packages/mercurial-1.3-py2.6-linux-i686.egg/mercurial/localrepo.py
in __init__, line 61

--------  

Environment:

Request Method: POST
Request URL: http://##################m/r/new/
Django Version: 1.0.2 final
Python Version: 2.6.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.markup',
 'django.contrib.sites',
 'django.contrib.sessions',
 'djblets.datagrid',
 'djblets.feedview',
 'djblets.siteconfig',
 'djblets.util',
 'djblets.webapi',
 'reviewboard.accounts',
 'reviewboard.admin',
 'reviewboard.changedescs',
 'reviewboard.diffviewer',
 'reviewboard.iphone',
 'reviewboard.reports',
 'reviewboard.reviews',
 'reviewboard.scmtools',
 'reviewboard.webapi',
 'django_evolution']
Installed Middleware:
('django.middleware.gzip.GZipMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.doc.XViewMiddleware',
 'django.middleware.http.ConditionalGetMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'djblets.siteconfig.middleware.SettingsMiddleware',
 'reviewboard.admin.middleware.LoadSettingsMiddleware',
 'djblets.log.middleware.LoggingMiddleware',
 'reviewboard.admin.middleware.CheckUpdatesRequiredMiddleware')


Traceback:
File
"/usr/local/lib/python2.6/dist-packages/Django-1.0.2_final-py2.6.egg/django/core/handlers/base.py"
in get_response
  86.                 response = callback(request, *callback_args,
**callback_kwargs)
File
"/usr/local/lib/python2.6/dist-packages/Djblets-0.5.1-py2.6.egg/djblets/auth/util.py"
in _checklogin
  45.             return view_func(request, *args, **kwargs)
File
"/usr/local/lib/python2.6/dist-packages/ReviewBoard-1.0.1-py2.6.egg/reviewboard/reviews/views.py"
in new_review_request
  84.         fields[repo.id] = repo.get_scmtool().get_fields()
File
"/usr/local/lib/python2.6/dist-packages/ReviewBoard-1.0.1-py2.6.egg/reviewboard/scmtools/models.py"
in get_scmtool
  40.         return cls(self)
File
"/usr/local/lib/python2.6/dist-packages/ReviewBoard-1.0.1-py2.6.egg/reviewboard/scmtools/hg.py"
in __init__
  19.             self.client = HgClient(repository.path)
File
"/usr/local/lib/python2.6/dist-packages/ReviewBoard-1.0.1-py2.6.egg/reviewboard/scmtools/hg.py"
in __init__
  140.         self.repo = hg.repository(hg_ui, path=repoPath)
File
"/usr/local/lib/python2.6/dist-packages/mercurial-1.3-py2.6-linux-i686.egg/mercurial/hg.py"
in repository
  63.     repo = _lookup(path).instance(ui, path, create)
File
"/usr/local/lib/python2.6/dist-packages/mercurial-1.3-py2.6-linux-i686.egg/mercurial/localrepo.py"
in instance
  2187.     return localrepository(ui, util.drop_scheme('file', path), create)
File
"/usr/local/lib/python2.6/dist-packages/mercurial-1.3-py2.6-linux-i686.egg/mercurial/localrepo.py"
in __init__
  61.                 raise error.RepoError(_("repository %s not found") %
path)

Exception Type: RepoError at /r/new/
Exception Value: repository  ################### not found
chipx86
#1 chipx86
Well, first, don't do that :) But we could perhaps bullet-proof this a bit.
  • +Confirmed
  • -Priority-Medium
    +Priority-Low
    +Component-SCMTools
    +Milestone-Release1.1
#2 yer***@gmai***** (Google Code) (Is this you? Claim this profile.)
It's easy to say. Copy pasting from emails often gives a space at the end for some
reason. It's not easy to catch.
chipx86
#3 chipx86
Fixed on master in r456b583 and release-1.0.x in r553ec54.
  • -Confirmed
    +Fixed
  • -Milestone-Release1.1
    +Milestone-Release1.0.x
  • +chipx86