2007: error uploading diff with post-review 0.3.2 (path resolution fail)

latc****@gmai***** (Google Code) (Is this you? Claim this profile.)
March 22, 2011
I create a diff with the following command so that I can see the changes in our sql scripts between iterations:

svn diff http://svn/marin/branches/iteration-0009/mscm/sql/changes http://svn/marin/branches/iteration-0010/mscm/sql/changes > sql.diff

I then post-review that diff:

post-review -d --diff-filename=sql.diff

>>> RBTools 0.3.2
>>> Home = /Users/jon
>>> svn info
>>> diff --version
>>> repository info: Path: http://svn/marin, Base path: /branches/iteration-0009, Supports changesets: False
>>> svn propget reviewboard:url /Users/jon/checkout/branches/iteration-0009
>>> HTTP GETting api/
>>> HTTP GETting http://rb/api/info/
>>> Using the new web API
>>> HTTP GETting http://rb/api/repositories/
>>> HTTP GETting http://rb/api/repositories/1/
>>> HTTP GETting http://rb/api/repositories/1/info/
>>> repository info: Path: http://svn/marin, Base path: /branches/iteration-0009, Supports changesets: False
>>> Attempting to create review request on http://svn/marin for None
>>> HTTP POSTing to http://rb/api/review-requests/: {'repository': u'http://svn/marin'}
>>> Review request created
>>> Uploading diff, size: 14301
>>> HTTP POSTing to http://rb/api/review-requests/11742/diffs/: {'basedir': '/branches/iteration-0009'}
>>> Got API Error 207 (HTTP code 400): The file was not found in the repository
>>> Error data: {u'stat': u'fail', u'file': u'/branches/iteration-0009/iteration-0009/mscm/sql/changes/MARIN_COMMON/6595', u'err': {u'msg': u'The file was not found in the repository', u'code': 207}, u'revision': u'40575'}

As you can see, iteration-0009 gets included twice in the path for some reason.

Not sure how to work around this one. Ideas?
chipx86
#1 chipx86
post-review finds the directory within the SVN server that represents the current directory it's being run from. In this case, that's /branches/iteration-0009.

The diffs are including the iteration-0009 part as well. So you need to either have the diffs not contain that, or you need to run this from /branches.
  • -Type-Defect
    +Type-Support
#2 latc****@gmai***** (Google Code) (Is this you? Claim this profile.)
This used to work with post-review 0.2 and older versions of rb.

The header for the diff of a file looks like this:

Index: MARIN/201102281519-create-last-forecast-settings
===================================================================
--- MARIN/201102281519-create-last-forecast-settings    (.../iteration-0009/mscm/sql/changes)   (revision 0)
+++ MARIN/201102281519-create-last-forecast-settings    (.../iteration-0010/mscm/sql/changes)   (revision 40584)

When I run svn diff and post-review, I do it from within the iteration-XXX directory since that is all I have checked out of svn and where the reviewboard:url property is set. It wouldn't make sense for me to checkout ALL of /branches from svn since I don't need all of our branches...

Ideally, post-review would look at the diff and use the current working directory + path/to/file/in/diff (MARIN/201102281519-create-last-forecast-settings ) to create the svn path.

I was able to upload the diff using the webui by just setting the path to /branches, but it seems like there should be a way to do this from the CLI too without having to checkout all of /branches to upload the diff.
david
#3 david
I don't think we need to add yet another special argument to post-review for this. I'd suggest either use post-review to post your in-progress changes, or with a revision range, or use the web UI to submit the diffs, but wanting to use post review inside an svn repository with a diff file is a pretty unusual use case.
  • +WontFix