4735: rbt patch -C fails on mercurial

sebastianloesch

What version are you running?

RBTools 1.0

What steps will reproduce the problem?

  1. rbt patch -C 18401

What is the expected output? What do you see instead?

I expect the local repository to be patched with the review request and the changes committed immediately.
Instead the patch is beeing applied but the commit fails.

What operating system are you using?

Linux-4.4.0-43-Microsoft-x86_64-with-Ubuntu-16.04-xenial
(But colleages tell me about the same problem on other operating systems.)

Attach the debug out from the command.

$ rbt patch -dC 18401
>>> RBTools 1.0
>>> Python 2.7.12 (default, Dec  4 2017, 14:50:18)
[GCC 5.4.0 20160609]
>>> Running on Linux-4.4.0-43-Microsoft-x86_64-with-Ubuntu-16.04-xenial
>>> Home = XXXXX
>>> Current directory = XXXXX
>>> Command line: rbt patch -dC 18401
>>> Running: tf vc help
>>> Checking for a Mercurial repository...
>>> Running: hg root
>>> Running: hg showconfig
>>> Running: hg svn info
>>> Command exited with rc 255: [u'hg', u'svn', u'info']
hg: unknown command 'svn'
Mercurial Distributed SCM

basic commands:

 add           add the specified files on the next commit
 annotate      show changeset information by line for each file
 clone         make a copy of an existing repository
 commit        commit the specified files or all outstanding changes
 diff          diff repository (or selected files)
 export        dump the header and diffs for one or more changesets
 forget        forget the specified files on the next commit
 init          create a new repository in the given directory
 log           show revision history of entire repository or files
 merge         merge another revision into working directory
 pull          pull changes from the specified source
 push          push changes to the specified destination
 qdiff         diff of the current patch and subsequent modifications
 qnew          create a new patch
 qpop          pop the current patch off the stack
 qpush         push the next patch onto the stack
 qrefresh      update the current patch
 remove        remove the specified files on the next commit
 serve         start stand-alone webserver
 status        show changed files in the working directory
 summary       summarize working directory state
 update        update working directory (or switch revisions)

(use "hg help" for the full list of commands or "hg -v" for details)
---
>>> Using candidate path u'default': u'XXXXX'
>>> Repository info: Path: XXXXX, Base path: , Supports changesets: False
>>> Making HTTP GET request to XXXXX
>>> Making HTTP GET request to XXXXX/review-requests/18401/diffs/
>>> Cached response for HTTP GET XXXXX/review-requests/18401/diffs/ expired and was modified
>>> Making HTTP GET request to XXXXX/review-requests/18401/diffs/1/
>>> Cached response for HTTP GET XXXXX/review-requests/18401/diffs/1/ expired and was not modified
>>> Making HTTP GET request to XXXXX/review-requests/18401/diffs/1/
>>> Cached response for HTTP GET XXXXX/review-requests/18401/diffs/1/ expired and was not modified
>>> Running: hg status --modified --added --removed --deleted
Patch is being applied from request 18401 with diff revision 1.
>>> Running: hg parents --hidden -r 0
>>> Running: hg patch --no-commit /tmp/tmpM4fnJN --config extensions.rbtoolsnormalize=/usr/local/lib/python2.7/dist-packages/RBTools-1.0.dev0-py2.7.egg/rbtools/helpers/hgext.py

applying /tmp/tmpM4fnJN

Successfully applied patch.
>>> Making HTTP GET request to XXXXX/review-requests/18401/?force-text-type=plain
>>> Cached response for HTTP GET XXXXX/review-requests/18401/?force-text-type=plain expired and was not modified
>>> Making HTTP GET request to XXXXX/users/knueppel/
>>> Cached response for HTTP GET XXXXX/users/knueppel/ expired and was modified
Traceback (most recent call last):
  File "/usr/local/bin/rbt", line 9, in <module>
    load_entry_point('RBTools==1.0.dev0', 'console_scripts', 'rbt')()
  File "/usr/local/lib/python2.7/dist-packages/RBTools-1.0.dev0-py2.7.egg/rbtools/commands/main.py", line 120, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/usr/local/lib/python2.7/dist-packages/RBTools-1.0.dev0-py2.7.egg/rbtools/commands/__init__.py", line 720, in run_from_argv
    exit_code = self.main(*args) or 0
  File "/usr/local/lib/python2.7/dist-packages/RBTools-1.0.dev0-py2.7.egg/rbtools/commands/patch.py", line 216, in main
    not self.options.commit_no_edit)
  File "/usr/local/lib/python2.7/dist-packages/RBTools-1.0.dev0-py2.7.egg/rbtools/clients/mercurial.py", line 622, in create_commit
    '-u %s <%s>' % (author.fullname, author.email)]
  File "/usr/local/lib/python2.7/dist-packages/RBTools-1.0.dev0-py2.7.egg/rbtools/api/resource.py", line 345, in __getattr__
    raise AttributeError
AttributeError

Please provide any additional information below.

sebastianloesch
#1 sebastianloesch

I determined the reason. One has to perform

rbt login

first. This is due to the fact, that user attributes fullname and email are omitted for non-staff users (see: https://www.reviewboard.org/docs/manual/3.0/webapi/2.0/resources/user/).