Daemon News Ezine BSD News BSD Mall BSD Support Forum BSD Advocacy BSD Updates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Unable to get any DIffs to work



Rousell, Jeff wrote:
I am unable to get any diff outputs to work with a new CVSWeb
installation.
I am NOT a newbie who is posting here without first trying to solve
this myself.
The installation works perfectly for browsing and doing annotation
outputs but not for any diffs.
 rcsdiff and rlog ( 5.7) is installed and has been confirmed to work
fine from the command line.
I am not getting not getting any 500 errors nor server error log info
about the problem.
For the human readable diff I basically get a blank diff -- the page
looks fine with all eth header and footer prettiness- but the actual
"meat" of the page says: " - No viewable change - " If I try a unified or side-by-side I get something like below printed to
the browser( no header or footer prettiness):
/bin/diff: illegal option -- -
usage: diff [-bitw] [-c | -e | -f | -h | -n] file1 file2
       diff [-bitw] [-C number] file1 file2
       diff [-bitw] [-D string] file1 file2
       diff [-bitw] [-c | -e | -f | -h | -n] [-l] [-r] [-s] [-S name]
directory1 directory2
rcsdiff: /web-content/cvsroot/SCM/bin/jadd: diff failed
I am able to use rcsdiff from the command line just fine.  And it
appears as though cvsweb.cgi has the  access to  run rcsdiff and knows
where it is etc... Is there a debug flag that I cna sue so that it prints out the full diff
command that it is trying to perform so thhat I could verify that fomr
teh command line?

Which OS? Which version of CVSweb? Can you post of a diff between cvsweb.conf.dist and your cvsweb.conf?

Uncommenting '$DEBUG = 1;' in cvsweb.conf will cause STDERR to be sent to your web server error log instead of /dev/null. However, for the rcsdiff command STDERR is sent to STDOUT by default so you are already seeing any errors in your web browser.

Attached is a patch for CVSweb 3.0.6 which will print out the rcsdiff command used. It should print out at the top of the diff output.

One final note:
When testing from the command-line be sure to run the command as the web server user (i.e., 'sudo -u www rcsdiff ...').

-Jonathan
--- cvsweb.cgi.old	Wed Jan 11 22:12:42 2006
+++ cvsweb.cgi	Wed Jan 11 22:16:09 2006
@@ -2336,6 +2336,8 @@
   if (!open($fh, "-|")) {    # child
     open(STDERR, ">&STDOUT");    # Redirect stderr to stdout
     openOutputFilter();
+    print(join(' ', $CMD{rcsdiff}, @rcsdiff_options, @difftype, "-r$rev1",
+	  "-r$rev2", $fullname, "\n"));
     exec($CMD{rcsdiff}, @rcsdiff_options, @difftype, "-r$rev1", "-r$rev2",
          $fullname) or exit -1;
   }