rbt post using Mercurial

231 views
Skip to first unread message

Ali Ghorashi

unread,
Jun 4, 2014, 1:59:42 PM6/4/14
to revie...@googlegroups.com
Hello All,
I'm evaluating Review Board. I'm running RB version 2.0.1 on Centos 6.5 with Mercurial v 2.8.3.
My question is regarding the "rbt post" command: After I do a commit and run "rbt post", I get the following error:
ERROR: Error creating review request: Review request with this commit ID already exists in the repository. (HTTP 409, API Error 227)

But if I look up the version id (id=100 let's say) and do "rbt post 100". The command seems to work. After reading the documentation, it seems like the "rbt post" should always use the tip when no version is specified.

Is this the expected behavior? Does the user need to specify the version number every time a new post is created?

Thanks

-Ali
 

Christian Hammond

unread,
Jun 4, 2014, 4:49:41 PM6/4/14
to revie...@googlegroups.com
They don’t need to specify a version number. It is using the tip.

What’s happening with that error is that you’ve already posted a review request representing the commit that you’ve posted for review. Review Board tries to keep a 1-to-1 mapping of commit ID and review request, and so it’s noticing that that particular commit is already in the database.

If you want to update it, you’d pass -u to rbt post.

Christian

-- 
Christian Hammond - chi...@chipx86.com
Review Board - http://www.reviewboard.org
Beanbag, Inc. - http://www.beanbaginc.com
--
Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/
---
Sign up for Review Board hosting at RBCommons: https://rbcommons.com/
---
Happy user? Let us know at http://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ali Ghorashi

unread,
Jun 9, 2014, 2:45:48 PM6/9/14
to revie...@googlegroups.com
Thanks for the reply Christian.
I posted the wrong error message. The error is:
ERROR: Error uploading diff
The file was not found in the repository. (HTTP 400, API Error 207)
Your review request still exists, but the diff is not attached.

Successive attempts with the -u options (i.e. rbt post -u) generate the same error and no diff is attached.
I tried to run the post command with the debug option and got the following error:

>>> Got API Error 207 (HTTP code 400): The file was not found in the repository.
>>> Error data: {u'stat': u'fail', u'file': u'.cproject', u'err': {u'msg': u'The file was not found in the repository.', u'code': 207}, u'revision': u'1b3944112e43'}
Traceback (most recent call last):
  File "/usr/bin/rbt", line 9, in <module>
    load_entry_point('RBTools==0.6', 'console_scripts', 'rbt')()
  File "/usr/lib/python2.6/site-packages/RBTools-0.6-py2.6.egg/rbtools/commands/main.py", line 134, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/usr/lib/python2.6/site-packages/RBTools-0.6-py2.6.egg/rbtools/commands/__init__.py", line 422, in run_from_argv
    exit_code = self.main(*args) or 0
  File "/usr/lib/python2.6/site-packages/RBTools-0.6-py2.6.egg/rbtools/commands/post.py", line 769, in main
    submit_as=self.options.submit_as)
  File "/usr/lib/python2.6/site-packages/RBTools-0.6-py2.6.egg/rbtools/commands/post.py", line 545, in post_request
    raise CommandError('\n'.join(error_msg))
rbtools.commands.CommandError: Error uploading diff

If I do a "rbt post 101" instead of the first "rb post" the operation is successful.

-Ali

Ali Ghorashi

unread,
Jun 9, 2014, 4:36:09 PM6/9/14
to revie...@googlegroups.com
Update: The "rbt post 101" command does not work either. 
I should mention that I'm using mercurial via ssh. In other words, my server URL is ssh://xxx.xxx.com

Ali Ghorashi

unread,
Jun 10, 2014, 12:33:56 PM6/10/14
to revie...@googlegroups.com
Ok. I must be missing something. Here is what I'm trying on a fresh reviewboard install
1) Configure a repo with a full path: ssh://source.xxx.com//path_to_project
2) Enter user name and password
3) Push all changes to the Mercurial Repo
4) Change a file
5) Commit the file (no push)
6) Run "rbt post"
7) Get an error saying "Got API Error 207 (HTTP code 400): The file was not found in the repository"

What am I doing wrong?

-Ali

Christian Hammond

unread,
Jun 10, 2014, 7:41:10 PM6/10/14
to revie...@googlegroups.com
Hi Ali,

Can you run the ‘rbt post’ with —debug and show me the result?

Also, what does your branch structure look like? It’ll be helpful for me to know what the commit ID is for the change you’re trying to post, as well as the nearest upstream branch.

Christian

-- 
Christian Hammond - chri...@beanbaginc.com

Ali Ghorashi

unread,
Jun 11, 2014, 11:43:45 AM6/11/14
to revie...@googlegroups.com, chri...@beanbaginc.com
Thanks Christian,
See the attached file for the debug output. There is nothing special about the repo setup: I don't have any branches. Everything up to changeset 100:79c09fdfad23 is pushed into the main repo. I changed a file with changeset: 101:1170d2410ead and then did a "rbt post". To say it a different way: when I type hg out, I only get changeset 101:1170d2410ead.

-Ali
rb_post.txt

Ali Ghorashi

unread,
Jun 12, 2014, 11:17:46 AM6/12/14
to revie...@googlegroups.com, chri...@beanbaginc.com
Are the "hg svn" errors normal? 
I'm also confused about another thing: Why does the reviewboard server needs to know where the main Mercurial repo is? What if one does not exist? In a distributed source control system, all the data is available to the "rbt" tool. It should be able to post a complete diff without the server having to know any specifics about the repo.

Any help would be appreciated.

Thanks
-Ali

Christian Hammond

unread,
Jun 12, 2014, 3:32:36 PM6/12/14
to revie...@googlegroups.com
The ‘hg svn’ errors are normal in debug output, if the appropriate extension is not installed or it’s not a hg svn repository.

Review Board fetches the full contents of the files referenced in the diffs in order to generate a side-by-side diff viewer that can be analyzed and expanded. Because of this, we need some repository to talk to that has the most up-to-date commits.

Christian

-- 
Christian Hammond - chri...@beanbaginc.com
Review Board - http://www.reviewboard.org
Beanbag, Inc. - http://www.beanbaginc.com

Ali Ghorashi

unread,
Jun 12, 2014, 3:36:43 PM6/12/14
to revie...@googlegroups.com, chri...@beanbaginc.com
Thanks for clearing that up.
Is there any file/function I can put some debug statements in to see what the problem is? I have't had time to start tracing though the code yet.

Christian Hammond

unread,
Jun 12, 2014, 3:43:05 PM6/12/14
to revie...@googlegroups.com
The thing I’d want to check first is that src/Message.h, revision 79c09fdfad23 is actually in the repository that Review Board is pointed to. Can you verify that? If that’s not the case, then either that repository doesn’t have the latest-and-greatest (which is important), or there’s some issue with the range being posted from your local copy.

Christian

-- 
Christian Hammond - chri...@beanbaginc.com
Review Board - http://www.reviewboard.org
Beanbag, Inc. - http://www.beanbaginc.com

Ali Ghorashi

unread,
Jun 12, 2014, 3:51:14 PM6/12/14
to revie...@googlegroups.com
Changeset  79c09fdfad23 did not include src/Message.h. The last time src/Message.h was in the changeset was on rev 68:2ed54119d47d (33 commits ago). With that said, I verified that the latest version of src/Message.h (prior to this last change) is in the repo.


You received this message because you are subscribed to a topic in the Google Groups "reviewboard" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/reviewboard/ZDTY5dyre0U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to reviewboard...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
-Ali

Ali Ghorashi

unread,
Jun 16, 2014, 12:39:06 PM6/16/14
to revie...@googlegroups.com
I'm still getting the file not found error when I do a rbt post -u -d. Here is the error (I'm trying a different file than before.)

>>> Error data: {u'stat': u'fail', u'file': u'src/SIPSA.cpp', u'err': {u'msg': u'The file was not found in the repository.', u'code': 207}, u'revision': u'79c09fdfad23'}

I've been tracing through the code to see where the problem is. I added the following debug message to the popen method of SCMTool:

 logging.debug('SCMTool.popen command = %s',command)

And this is what I'm getting:
SCMTool.popen command = [u'hg', u'--noninteractive', u'--repository', u'ssh://source.cei.com//home/hg/projects/sipsa/core/', u'--cwd', u'ssh://source.cei.com//home/hg/projects/sipsa/core/', u'--config', u'ui.ssh=rbssh', u'cat', u'--rev', u'79c09fdfad23', u'src/SIPSA.cpp']

If I read this right, it looks like the current working directory is being set to "ssh://....". Is that correct? I'm not sure Mercurial can use a remote ssh path as the current directory. When I paste the command into a shell, Mercurial (version 2.8.2) says:

  abort: No such file or directory: 'ssh://source.cei.com//home/hg/projects/sipsa/core'

Thanks
-Ali
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/
---
Sign up for Review Board hosting at RBCommons: https://rbcommons.com/
---
Happy user? Let us know at http://www.reviewboard.org/users/
---
You received this message because you are subscribed to a topic in the Google Groups "reviewboard" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/reviewboard/ZDTY5dyre0U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to reviewboard+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
-Ali

Christian Hammond

unread,
Jun 17, 2014, 12:47:28 AM6/17/14
to revie...@googlegroups.com
What happens if you remove the —cwd line?

We probably want to conditionalize setting that.

Christian

-- 
Christian Hammond - chri...@beanbaginc.com
Review Board - http://www.reviewboard.org
Beanbag, Inc. - http://www.beanbaginc.com

Ali Ghorashi

unread,
Jun 17, 2014, 2:27:47 PM6/17/14
to revie...@googlegroups.com
I get a "repo is not local error". It looks like the code is trying to get the file contents as of a specific changeset from a remote server via ssh. I'm not sure if there is a way to do that without cloning the repo. If there repo is available via a webbrowser, then the file can be retrieved via the /raw interface. That's because the server will ask the repo located on the same server for the file.

To me, it looks like what it's trying to do cannot be don via ssh.

-Ali


To unsubscribe from this group and all its topics, send an email to reviewboard...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
-Ali
Reply all
Reply to author
Forward
0 new messages