【发布时间】:2011-03-03 16:06:30
【问题描述】:
我正在尝试使用 Hudson 在 CVS 存储库上执行 CI,但是当我尝试运行构建时收到以下错误:
由用户 admin 启动 [Pilot1] $ "C:\Program Files (x86)\CVS Suite\CVSNT\cvs.exe" -Q -z3 -d :sserver:login:_server :/CVSRepo co -P -d workspace -D "UTC 时间 2011 年 3 月 3 日星期四下午 2:20:08" ITitC/
cvs checkout: 在目录中.:
cvs checkout: 无法打开 CVS/Entries 进行阅读: 没有这样的文件或目录 java.io.IOException:不存在这样的目录。您是否指定了正确的分支?也许您指定了一个标签:c:\ path\workspace
在 hudson.scm.CVSSCM.archive(CVSSCM.java:474) 在 hudson.scm.CVSSCM.access $100(CVSSCM.java:123) 在 hudson.scm.CVSSCM$1.invoke(CVSSCM.java:381) 在 hudson.scm.CVSSCM$1.invoke(CVSSCM.java:374) 在 hudson.FilePath.act(FilePath.java:753)
如果我删除命令末尾的“ITitC”(模块)并直接通过 cmd 提示符运行它,我就能成功进行更新。我还能够在 Hudson 构建开始时在“工作区”目录中快速创建一个具有该名称的文件夹,但每个新构建都会删除它。
有没有一种方法可以强制 Hudson 或 CVSNT 在每次构建之前或默认情况下根据需要创建文件夹?这是 CVSNT 的问题吗?我不太喜欢 CVSNT,愿意用更好的选择来代替它。
【问题讨论】:
-
两件事: 1. 你的 CVSROOT 字符串看起来很奇怪,但这可能只是混淆的产物......
:sserver:的连接字符串应该如下所示::sspi:user@server:/CVSRepo(请注意 @ 而不是冒号)。 2. 命令行中的“ITitC”不是分支,它是您要检出的模块的名称。如果它确实是一个分支的名称,那么您应该改用-r ITitC。不过,您仍然需要指定要签出的模块。如果要检出整个存储库,只需使用“.”即可。 (即单个句点字符)作为模块名称。 -
另外,如果 ITitC 确实是模块的名称而不是分支,那么您应该在末尾丢失正斜杠。
-
对不起,我的第一条评论中的错字:我搞砸了示例 CVSROOT 中的协议。当然应该是
:sserver:user@server:/CVSRepo -
感谢您的回复。你是对的,服务器字符串在我的混淆中被破坏了——当“ITitC”被“。”替换时,它连接并开始提取数据。你说得对,ITitC 是一个模块,而不是一个分支——我会更新这个问题。我已经从 ITitC/ 中删除了 / 但这没有帮助 - 我仍然收到错误消息。由于我无法控制的权限,我无法提取整个回购(使用“。”)。任何其他建议将不胜感激。
-
试试:
C:\Program Files (x86)\CVS Suite\CVSNT\cvs.exe -d :sserver:user@server:/CVSRepo co ITitC。这行得通吗?