[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
loss of some 'cvs log' output: remote cvs, stderr+stdout, some OS
From: |
Mike McKay Jr. |
Subject: |
loss of some 'cvs log' output: remote cvs, stderr+stdout, some OS |
Date: |
Thu, 13 May 2004 19:40:05 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 |
Hey,
I am losing some cvs log output when I combine the following things:
- CVS Versions tried: 1.10, 1.10.8, 1.11.1p1, 1.11.2, 1.12.6
- Remote CVS using ssh (:ext: method).
(no problem if using local CVS)
- Grab standard error and standard out of the 'cvs log' command
and send that output to another program - see examples below.
(no problem if I do not grab standard error from the 'cvs log'
command)
- OS being Linux(2.4.20-20.9 Red Had release 9) or IRIX64 (6.5).
(no problem on OSF1 - didn't try other OS's)
I do not know if this is a problem with cvs, my OS, ssh, or what...I am
hoping that you all might have suggestions on what I might do. Perhaps
you have heard of someone with the same problem and know what they did.
This all came about when I wrote a perl script to massage the stderr/stdout
output from a 'cvs log' command. Once I used remote cvs with my linux machine,
I noticed the problem.
Here are the steps I am able to do to recreate the problem:
- Create an empty directory where repo and tests will go and cd there.
% setenv CHECK_CVS_DIR /tmp/testdir
% mkdir $CHECK_CVS_DIR
% cd $CHECK_CVS_DIR
- Create new repository.
% cvs -d $CHECK_CVS_DIR/Repo init
- Create file that simulates a long log message.
The longer the log message - the more likely the error will happen.
This is the key - it seems the errors happen when transferring long
log messages. Also, the lines of the log message have to be long.
It might help to have spaces. It's a mystery to me...
% mkdir foo && cd foo
% perl -e 'for( $i=0;$i<10000;$i++ ){print "a ";if($i%100==0){print
"\n"}};' > ../commit_log_msg
- Import new module with one file
% touch bar
% cvs -d $CHECK_CVS_DIR/Repo import -m initial foo vt rt
- Remove and checkout foo using Remote CVS
% cd ..
% rm -rf foo
% cvs -d :ext:${HOST}:${CHECK_CVS_DIR}/Repo co foo
% cd foo
- Make change to foo and create several long log message versions
% echo hello >> ./bar && cvs commit -F ../commit_log_msg
% echo hello >> ./bar && cvs commit -F ../commit_log_msg
% echo hello >> ./bar && cvs commit -F ../commit_log_msg
% echo hello >> ./bar && cvs commit -F ../commit_log_msg
- Test output from several trials.
seems to occur when trying to grab stderr (which, by the way, there
is no standard error anyway).
o This works - no intermediate program.
% (cvs log bar > log && wc log) && \
(cvs log bar > & log && wc log)
o This sometimes fails (I get about 1/2 failure rate).
% (cvs log bar | wc) && \
(cvs log bar | & wc)
o This sometimes fails (I get about 1/2 failure rate).
% (perl -e 'print `cvs log bar `' | wc) && \
(perl -e 'print `cvs log bar 2>&1`' | wc)
--
--Mike
---------------------
Mike McKay
lmdm@lanl.gov
505-665-2714
---------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- loss of some 'cvs log' output: remote cvs, stderr+stdout, some OS,
Mike McKay Jr. <=