1727: post-review wrongly detects client class if few source control tools installed on server (e.g mercurial and clearcase)

xrev*****@gmai***** (Google Code) (Is this you? Claim this profile.)
April 4, 2011
What version are you running?

What's the URL of the page containing the problem?

What steps will reproduce the problem?
1. install on server mercurial and clearcase
2. try to post review request from clearcase view
3. you get error from MercurialClient class

What is the expected output? What do you see instead?
I expect post-review to use ClearCase client in clearcase view.

What operating system are you using? What browser?
RHEL5, firefox 3.6

Please provide any additional information below.

As far as I understand, Client class, that post-review use to generate
review, determined by trying to execute source control tool of each
client defined in  SCMCLIENTS list.

In this list MercurialClient class listed before ClearCaseClient
class. Post-review run "hg --help" succesfully and use it for review
generation even in ClearCase view. I can work around it by moving
ClearCase to be first in SCMCLIENTS list but then I can not not
generate review request in Mercurial view.

--------- run of postreview when clearcase listed AFTER mercurial--------

#> /storage/src/rbtools.staging/rbtools/rbtools/postreview.py -d --server=http://rboard -n test.file
>>> svn info
>>> git rev-parse --git-dir
>>> hg showconfig
>>> hg root
>>> hg svn info
>>> repository info: Path: ., Base path: /, Supports changesets: False
Traceback (most recent call last):
  File "/storage/src/rbtools.staging/rbtools/rbtools/postreview.py", line 3030, in ?
  File "/storage/src/rbtools.staging/rbtools/rbtools/postreview.py", line 2998, in main
    diff, parent_diff = tool.diff(args)
  File "/storage/src/rbtools.staging/rbtools/rbtools/postreview.py", line 2058, in diff
    return self._get_outgoing_diff(files)
  File "/storage/src/rbtools.staging/rbtools/rbtools/postreview.py", line 2104, in _get_outgoing_diff
    remote = self._remote_path[0]
IndexError: tuple index out of range

------- run of postreview when clearcase listed BEFORE mercurial--------

#> /storage/src/rbtools.staging/rbtools/rbtools/postreview.py -d --repository-url=/vobs --server="http://rboard" -n test.file 
>>> cleartool pwv -short
>>> repository info: Path: /vobs, Base path: /vobs, Supports changesets: False
>>> cleartool desc -pre /vobs/test_view/test.file
>>> cleartool desc -fmt %Vn /vobs/test_view
--- /vobs/test_view/@@/main/I_test_view_somebranch/3/test.file/@@/main/I_test_view_somebranch/me_test_view_somebranch_2/0   2002-02-21 23:30:39.942229878 -0800 
+++ /vobs/test_view/test.file   2002-02-21 23:30:50.442260588 -0800 
@@ -8,6 +8,10 @@ 
 bla bla bla
 bla bla bla
 bla bla bla
+FIXME 4: test for rboard
+FIXME 5: another change for test
#2 david
Fixed in reviewboard 7553ec1 and rbtools 47fb2ce. Thanks!
  • +Fixed