这两天在琢磨用NAnt来实现自动构建,目前已经搞清楚了Build文件的编写方法了,针对目前的项目写了一个build文件,现在测试时编译、FxCop静态分析等工作都正常执行,只有cvs-checkout执行不正确,不知道问题出在什么地方。
下面是我试验用cvs-checkout任务的build文件:
<?xml version="1.0"?>
<project name="RailwayStation" default="go" basedir="D:\Railway">
<target name="go" depends="cvscheckout" />
<target name="cvscheckout">
<cvs-checkout cvsroot=":pserver:scmuser@192.168.0.1:/DotNet" module="RailWayStation" destination="D:\" password="scmuser" failonerror="false" verbose="true" usesharpcvslib="true" />
</target>
</project>
<project name="RailwayStation" default="go" basedir="D:\Railway">
<target name="go" depends="cvscheckout" />
<target name="cvscheckout">
<cvs-checkout cvsroot=":pserver:scmuser@192.168.0.1:/DotNet" module="RailWayStation" destination="D:\" password="scmuser" failonerror="false" verbose="true" usesharpcvslib="true" />
</target>
</project>
这个实验性的Build文件的目的就是把cvs repository :pserver:scmuser@192.168.0.1:/DotNet 下的RailWayStation模块检出到D:\下。
以上这个build文件在不同情况下执行的错误现象如下:
- 使用NAnt 0.84 Stable Release,cvs-checkout 任务的usesharpcvslib属性设为 false,在执行时只显示一句“Connection established”,没有检出操作,目标目录中的文件没有变化;
- 使用NAnt 0.84 Stable Release,cvs-checkout 任务的usesharpcvslib属性设为 true,在执行时只显示一句“Connection established”,有时会报sharpcvs内部错误,没有检出操作,目标目录中的文件没有变化;
- 使用NAnt 0.85 04-11-18的 Nightly build,cvs-checkout 任务的usesharpcvslib属性设为 false,在执行时提示 cvs-checkot任务的 password 属性已经被废弃,建议改用 cvs-pass 属性,但是改为 cvs-pass 属性后,执行时提示 “Unexpected attribute "cvs-pass" on element <cvs-checkout>.”;继续使用 password 属性则在执行时无法提交指定的cvs密码,而是使用空密码,造成受权失败,真是莫名奇妙!
- 使用NAnt 0.85 04-11-18的 Nightly build,cvs-checkout 任务的usesharpcvslib属性设为 true,在执行时显示如下的信息,然后就没有任何后续的检出操作了。
cvscheckout:
[cvs-checkout] D:\My Documents\My Sources\DotNet\RailWayStation\CVSCheckout.buil
d(5,10): Attribute 'password' for <cvs-checkout /> is deprecated. Use <cvs-
pass> task instead.
[cvs-checkout] Working directory: D:\
[cvs-checkout] Executable: D:\Applications\DevTools\DotNet\NAnt 0.85\bin\scvs.ex
e
[cvs-checkout] Arguments: -d:pserver:scmuser@192.168.0.1:/DotNet -verbose check
out RailWayStation
[cvs-checkout] Starting 'D:\Applications\DevTools\DotNet\NAnt 0.85\bin\scvs.exe
( -d:pserver:scmuser@192.168.0.1:/DotNet -verbose checkout RailWayStation)' in '
D:\'
[cvs-checkout] Logging in to :pserver:scmuser@192.168.0.1:/DotNet
[cvs-checkout] D:\My Documents\My Sources\DotNet\RailWayStation\CVSCheckout.buil
d(5,10): Attribute 'password' for <cvs-checkout /> is deprecated. Use <cvs-
pass> task instead.
[cvs-checkout] Working directory: D:\
[cvs-checkout] Executable: D:\Applications\DevTools\DotNet\NAnt 0.85\bin\scvs.ex
e
[cvs-checkout] Arguments: -d:pserver:scmuser@192.168.0.1:/DotNet -verbose check
out RailWayStation
[cvs-checkout] Starting 'D:\Applications\DevTools\DotNet\NAnt 0.85\bin\scvs.exe
( -d:pserver:scmuser@192.168.0.1:/DotNet -verbose checkout RailWayStation)' in '
D:\'
[cvs-checkout] Logging in to :pserver:scmuser@192.168.0.1:/DotNet
在Google里面好像没有找到我遇到的故障,今天一天都在琢磨这个故障,有点快发疯的感觉了。