svndiffreview-board

ReviewBoard/SVN: rbt post failed to execute command ['svn', 'diff', '--diff-cmd=diff', '--notice-ancestry', '-r', 'BASE']


I'm trying to use reviewboard with SVN. Others in the office have got their system setup and are able to post (copies of a VM that got it working the first time). I've compared my system setup against theirs and things look the same, as far as I can tell.

When I run the rbt post command I get:

Failed to execute command: ['svn', 'diff', '--diff-cmd=diff', '--notice-ancestry ', '-r', 'BASE'] ['Index: main.cpp\n', '========================================================= ==========\n', 'Usage: diff [OPTIONS] \n', '\n', 'Display the dif ferences between and in unified diff\n', "format. OPTIONS are d iff extensions as described by 'svn help diff'.\n", "Use '--' alone to indicate that no more options follow.\n", "svn: E200012: 'diff' returned 2\n"]

I've made my svn client and gnu diff the first two things in my system path: C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\CollabNet

I'm running Windows 8 machine.

Reading https://groups.google.com/forum/#!topic/reviewboard/ylyfqMghJMM it looks like others have add this same issue, but doesn't look like there seems to be an accurate explaination on how to fix the issue.

Some detail. svn --version gives:

svn, version 1.8.9 (r1591380) compiled Jun 6 2014, 03:53:07 on x86-microsoft-windows5.1.2600

Copyright (C) 2014 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

  • ra_svn : Module for accessing a repository using the svn network protocol.
    • with Cyrus SASL authentication
    • handles 'svn' scheme
  • ra_local : Module for accessing a repository on local disk.
    • handles 'file' scheme
  • ra_serf : Module for accessing a repository via WebDAV protocol using serf.
    • using serf 1.3.4
    • handles 'http' scheme
    • handles 'https' scheme

diff --version gives:

diff (GNU diffutils) 2.8.7 Written by Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower.

Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Any thoughts or ideas on what I should check or what I'm missing? I'm going to post to the google group too to see if they have any ideas, if they have a solution I'll update this post too.


Additional Troubleshooting Steps Tried:

I found a post, which I tried to solve the problem https://subversion.open.collab.net/ds/viewMessage.do?dsForumId=4&dsMessageId=436703 . Seems that my Tortious SVN might of been causing the issue since it was installed first.

I've uninstalled Tortoise and CollabNet, then rebooted the installed CollabNet first then Tortoise. When TortoiseSVN installed I did NOT select "command line client tools". I then had to put GNU Diff back to the beginning of my system path. After that I tried to do the rbt post and got the same error. I then modified the Tortoise SVN install to include command line client tools and then tried again and still got the same error message.


Solution

  • After much frustration, we figured out the issue. We have a couple of different diff's located on the machine, GNU Diff as well as the diff that comes with collab net (which we use for svn).

    Collab net has the svn.exe in its directory. When doing a where diff I was able to see that the path and order was correct, in which GNU diff showed before CollabNet's diff. However CollabNet's diff was being used when running the command because the collab net diff is in the same directory as collab net's svn.exe. This means when the OS looks for a diff.exe it check's the local directory of where svn.exe is first, followed by the system path.

    That being said, renaming "diff.exe" in the collab net folder will allow the gnu diff to be referenced, which solved the problem and allowed the rbt post to work properly.