I run post-review from my laptop ("dev box") to submit review requests
to our remote RB server, which is running in a cloud VM.
For our RB server, we take a new VM with Ubuntu, install vanilla
apache, and issue an 'rb-site' command to install RB and host through
Apache. So, this is an Apache install, and we use mod_python. Our
apache config for RB is at /etc/apache2/sites-available/reviewboard
and includes in relevant part:
# Serve django pages
PythonPath "['/var/www/reviewboard/conf'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
SetEnv PYTHON_EGG_CACHE "/var/www/reviewboard/tmp/egg_cache"
SetEnv HOME "/var/www/reviewboard/data"
# Used to run multiple mod_python sites in the same apache
Note: we haven't tweaked any of the settings -- we just let the basic
install / rb-site do the work.
Digging in a little bit more, is that (if I remember correctly -- I
had debug statements in an older install that I've since wiped, so I
may be off), here are the two checks:
(1) Add a new repository in RB Admin site with Path: "ssh:// ...
anything ...": This causes a validation check through:
reviewboard.scmtools.core.SCMTool.check_repository() that uses "/var/
www/reviewboard/data/.ssh" as the operative SSH directory. This is
the operative directory for all John's previous email, and was what
was causing us problems for adding respositories on RB server only.
(2) On a dev. machine (laptop, etc. separate from the RB Server), a
dev wants to submit a review requests and issues a 'post-review'
command on their machine. Post-review contacts the RB server, and (as
far as I can tell) this starts a different code path on the RB server,
which ends up going to reviewboard.scmtools.HgClient.__init__(). When
we hit the line (175 in 1.5 RC1): "self.repo = hg.repository(hg_ui,
path=repoPath)", then we get an SSH exception bubbled up as follows:
2010-08-17 13:29:26,645 - ERROR - Exception thrown for user USER at
no suitable response from remote hg
Traceback (most recent call last):
django/core/handlers/base.py", line 100, in get_response
response = callback(request, *callback_args, **callback_kwargs)
py2.6.egg/reviewboard/accounts/decorators.py", line 25, in _check
return login_required(view_func)(*args, **kwargs)
djblets/auth/util.py", line 46, in _checklogin
return view_func(request, *args, **kwargs)
py2.6.egg/reviewboard/reviews/views.py", line 226, in review_detail
py2.6.egg/reviewboard/reviews/forms.py", line 214, in __init__
data, *args, **kwargs)
py2.6.egg/reviewboard/diffviewer/forms.py", line 44, in __init__
py2.6.egg/reviewboard/scmtools/models.py", line 52, in get_scmtool
py2.6.egg/reviewboard/scmtools/hg.py", line 29, in __init__
self.client = HgClient(repository.path)
py2.6.egg/reviewboard/scmtools/hg.py", line 175, in __init__
self.repo = hg.repository(hg_ui, path=repoPath)
File "/usr/lib/pymodules/python2.6/mercurial/hg.py", line 63, in
repo = _lookup(path).instance(ui, path, create)
File "/usr/lib/pymodules/python2.6/mercurial/sshrepo.py", line 51,
self.validate_repo(ui, sshcmd, args, remotecmd)
File "/usr/lib/pymodules/python2.6/mercurial/sshrepo.py", line 82,
self.abort(error.RepoError(_("no suitable response from remote
File "/usr/lib/pymodules/python2.6/mercurial/sshrepo.py", line 100,
RepoError: no suitable response from remote hg
This second error was fixed by adding the same identity file to a
directory "/var/www/.ssh" as we had in "/var/www/reviewboard/
So, it looks like for check #1 (add a repo), the $HOME = "/var/www/
reviewboard/data" (the RB-specific home), but for check #2 (RB server
receives a request from remote post-review), the $HOME = "/var/
www/" (the real Unix user home for 'www-data').
On Aug 18, 12:34 pm, Christian Hammond <chip...@chipx86.com> wrote:
> Glad it works for you, though I want to understand this a bit more.
> When you say you run post-review with a dev box, I assume you mean that it's
> still Apache looking for the /var/www/.ssh/id_dsa, right? is that a
> different install from the main install, or is it just that you're running
> post-review *on* the dev box?
> Is this happening with an Apache install, or using devserver? Also, are you
> running mod_python or fastcgi/wsgi?
> Does your Apache config have the SetEnv HOME line? If so, I'm surprised
> we're seeing that behavior, but it would indicate that Mercurial is never
> seeing what we've set it to, unlike Subversion and Git.
> Christian Hammond - chip...@chipx86.com
> Review Board -http://www.reviewboard.org
> VMware, Inc. -http://www.vmware.com
> On Tue, Aug 17, 2010 at 2:03 PM, Ryan Roemer <r...@ipstreet.com> wrote:
> > I've been working with John on this, and we finally pounded out
> > something that works. We are running Review Board 1.5 RC1. Say we
> > have a code base repo with ssh string of: ssh://
> > some_u...@foo.codebasehq.com/path/to/repo.hg
> > . To generalize, it took us something like this to get hosted SSH from
> > Codebase working:
> > SSH Directories
> > For server setup on Ubuntu, Review Board is going to run as the Apache
> > user 'www-data'. The Apache user's home (e.g., "$HOME") is '/var/www'
> > and we're installing Review Board to '/var/www/reviewboard'. We have
> > a private key named "id_dsa", that is uploaded (and passphrase-less)
> > to Codebase. We installed id_dsa on the server as follows:
> > * /var/www/.ssh/id_dsa
> > * /var/www/reviewboard/data/.ssh/id_dsa
> > (Actually with symlinks). I'm not sure if this was strictly
> > necessary, but seemed the only combination to work. Skimming (really
> > quickly) the code it seems that adding a repository with "ssh://" URL
> > does a validation against '/var/www/reviewboard/data/.ssh/id_dsa', but
> > using post-review on a dev. box causes actions on the server to use '/
> > var/www/.ssh/id_dsa' (with the Mercurial API calls).
> > Adding a Repository
> > Then, when we add a repository, the relevant fields we set were:
> > * Path: "ssh://some_u...@foo.codebasehq.com/path/to/repo.hg"
> > * Username: "some_user"
> > * Password: (Empty)
> > And everything seems to work (from post-review through actual reviews
> > on Review Board).
> > Not sure if the above behavior is / will be different with newer
> > versions of RB, but this is what got us through and actually hooked up
> > with Codebase, so hope it helps!
> > Best,
> > Ryan
> > On Aug 13, 12:10 pm, John DeRosa <jo...@ipstreet.com> wrote:
> > > On Aug 13, 2010, at 3:20 AM, Christian Hammond wrote:
> > > > Try renaming id_rsa_ipstreet to just id_rsa. This is what paramiko is
> > expecting to find in that directory.
> > > > Christian
> > > Done. Same thing happens.
> > > John
> > --
> > Want to help the Review Board project? Donate today at
> > Happy user? Let us know athttp://www.reviewboard.org/users/
> > -~----------~----~----~----~------~----~------~--~---
> > To unsubscribe from this group, send email to
> > reviewboard+unsubscr...@googlegroups.com<reviewboard%2bunsubscr...@googlegroups.com>
> > For more options, visit this group at
Want to help the Review Board project? Donate today at
Happy user? Let us know at http://www.reviewboard.org/users/
To unsubscribe from this group, send email to
For more options, visit this group at