ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wolfgang Werner" <wwer...@picturesafe.de>
Subject AW: cvs task - BufferedReader code in Exec.java
Date Fri, 14 Jul 2000 08:04:44 GMT
Hi Brian,

we do use the cvs task too.
Have you considered to perform an update on
an already checked out version? This removes
the need for the login completely!

Thanks, Wolfgang

> -----Ursprungliche Nachricht-----
> Von: Brian M. Kelley [mailto:bkelley@vizdom.com]
> Gesendet: Freitag, 14. Juli 2000 01:56
> An: ant-dev@jakarta.apache.org
> Betreff: cvs task - BufferedReader code in Exec.java
>
>
>   Hey all. I apologize if this is a huge letter, but I need all the space
>   to specify our problem. In using the cvs task in our build.xml, I've ran
>   into a curious annoyance, having to do with the cvs login
> command. So, we
>   have in our build file something like:
>
>   <!-- Slurp the native link/runtime libraries and headers from the CVS
>        repository on poe; login first. -->
>   <cvs
>     cvsRoot=":pserver:local@poe.vizdom.com:/usr/local/projects/share/cvs"
>     command="login"
>   />
>   ...
>
>
>   Upon ant's execution of the cvs login command, we get:
>
>
>       [Cvs] (Logging in to local@poe.vizdom.com)
>
>
>   and we sit and wait for an eternity, _hoping_ to see:
>
>
>       [Cvs] CVS Password:
>
>
>   but we never do, until we hit carriage-return. I traced this back
>   to some code in org.apache.tools.ant.taskdefs.Exec :
>
>
>       public void pumpStream()
>           throws IOException
>       {
>           byte[] buf = new byte[BUFFER_SIZE];
>           if (!endOfStream) {
>               String line = din.readLine();
>
>               if (line != null) {
>                   outputLog(line, messageLevel);
>               } else {
>                   endOfStream = true;
>               }
>           }
>       }
>
>   The deal is that 'cvs login', with a CVSROOT that points to a pserver,
>   (i.e. CVSROOT=:pserver:local@poe:/mycvs/dir) does an
> 'interactive' login,
>   one that prompts for a password with the string:
>
>     CVS Password:
>
>   with _no_ newline. Thus, when the output stream of the process that is
>   executing the cvs command is 'pumped' (i.e., the code fragment above
>   is ran through), din.readLine() is hoping to read a string that
> ends with
>   a newline or carriage-return linefeed (which the cvs interactive login
>   prompt does not contain). Thus, we don't see the interactive prompt
>   until we hit our carriage-return (thus not inputting a password for
>   cvs to validate us, making 'cvs login' fail). Of course, we could just
>   realize that we don't have to wait for the password prompt, type in
>   our password, hit enter, and go on our merry way. This doesn't seem
>   to be the best behavior for a cvs login, though.
>
>   Any workarounds (I've tried a few with no success)? Will there be a fix
>   for this? Am I completely off base? I read in the code that
> jCVS might be
>   used in the future; How far away from that point are we now?
>
>   I apologize if this subject has come up before and I wasn't around to
>   hear about it. :)
>
>
>   Brian
>


Mime
View raw message