3732: rbt post is generating diff against origin/master when on a local feature branch

ond****@salsita******** (Google Code) (Is this you? Claim this profile.)
Jan. 21, 2015
What version are you running?
Review Board 2.0.11 + RBTools 0.7

What's the URL of the page containing the problem?
RBTools are affected, so no URL really...

What steps will reproduce the problem?
1. Create a local git branch, doesn't matter where.
2. Checkout the branch, create a few commits.
2. Run rbt post HASH where HASH points to a local commit on that branch, can be even rbt post HEAD I guess.
3. Watch rbt generating diff against origin/master.

What is the expected output? What do you see instead?
I would expect rbt to only take the commit specified by HASH and post the diff. Why is it even computing anything?

The debug error output follows:

→ rbt post --debug de05642e1f0544aa59dd068eebe71476927d1bff
>>> RBTools 0.7
>>> Python 2.7.9 (default, Dec 11 2014, 04:42:00) 
[GCC 4.9.2]
>>> Running on Linux-3.17.6-1-ARCH-x86_64-with-glibc2.2.5
>>> Home = DELETED
>>> Current directory = DELETED
>>> Checking for a Subversion repository...
>>> Running: svn info --non-interactive
>>> Command exited with rc 1: ['svn', 'info', '--non-interactive']
svn: E155007: 'DELETED' is not a working copy
---
>>> Checking for a Git repository...
>>> Running: git rev-parse --git-dir
>>> Running: git config core.bare
>>> Running: git rev-parse --show-toplevel
>>> Running: git symbolic-ref -q HEAD
>>> Running: git config --get branch.DELETED.merge
>>> Command exited with rc 1: ['git', 'config', '--get', u'branch.DELETED.merge']
---
>>> Running: git config --get branch.DELETED.remote
>>> Command exited with rc 1: ['git', 'config', '--get', u'branch.DELETED.remote']
---
>>> Running: git config --get remote.origin.url
>>> repository info: Path: git@github.com:DELETED.git, Base path: , Supports changesets: False
>>> Running: git config --get reviewboard.url
>>> Making HTTP GET request to DELETED
>>> Cached response for HTTP GET DELETED/api/ expired and was not modified
>>> Running: git rev-parse DELETED
>>> Running: git rev-parse DELETED^
>>> Running: git merge-base DELETED origin/master
>>> Running: git diff --no-color --full-index --ignore-submodules -M --no-ext-diff DELETED..DELETED
>>> Running: git diff --no-color --full-index --ignore-submodules -M --no-ext-diff DELETED..DELETED
>>> Making HTTP GET request to DELETED/api/validation/
>>> Cached response for HTTP GET DELETED/api/validation/ expired and was not modified
>>> Making HTTP GET request to DELETED/api/validation/diffs/
>>> Cached response for HTTP GET DELETED/api/validation/diffs/ expired and was modified
>>> Making HTTP POST request to DELETED/api/validation/diffs/
>>> Got HTTP error: 413: <html>
<head><title>413 Request Entity Too Large</title></head>
<body bgcolor="white">
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nDELETED</center>
</body>
</html>

Traceback (most recent call last):
  File "/usr/bin/rbt", line 9, in <module>
    load_entry_point('RBTools==0.7', 'console_scripts', 'rbt')()
  File "/usr/lib/python2.7/site-packages/rbtools/commands/main.py", line 133, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/usr/lib/python2.7/site-packages/rbtools/commands/__init__.py", line 538, in run_from_argv
    exit_code = self.main(*args) or 0
  File "/usr/lib/python2.7/site-packages/rbtools/commands/post.py", line 662, in main
    (msg_prefix, e))
rbtools.commands.CommandError: Error validating diff

HTTP 413

What operating system are you using? What browser?
Not important.

Please provide any additional information below.
rbt starts to behave properly once the feature branch is pushed to the origin.
Was trying to fix the behaviour using one of the flags, but started to get things like
david
#1 david
Internally, rbt is actually creating two diffs. The first is the diff that you want to review. The second is what we call a "parent diff", and is used to handle the case where the source revision of the first diff hasn't yet been pushed to the repository. By default, that's done by diffing against origin/master

If you have the case where there's a long-running branch, that parent diff can be very large. We're currently working on making it automatically detect which remote branch produces the smallest parent diff, but in the meantime, if you have a better remote branch (such as origin/feature-branch), you can set TRACKING_BRANCH in your .reviewboardrc file or pass it in with --tracking-branch.
  • +NotABug
#2 ond****@salsita******** (Google Code) (Is this you? Claim this profile.)
So there is no way to just take arbitrary commit and upload it to Review Board? I mean, just type `rbt post HASH` and that's it, without having to review the whole parent diff?
#3 ond****@salsita******** (Google Code) (Is this you? Claim this profile.)
Is it possible to use the API directly to simply upload a diff for the given commit?