【问题标题】:Issue with Hudson/Jenkins pulling from a CVS repoHudson/Jenkins 从 CVS 存储库中提取的问题
【发布时间】: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。这行得通吗?

标签: hudson cvs jenkins cvsnt


【解决方案1】:

我们在 CVS 1.11.xx 中遇到了同样的问题,但无法解决。结果我们迁移到 CVS 1.12.xx 并且 Hudson 工作正常。似乎这个问题是特定于某些 CVS 服务器构建的,与 CVS 客户端无关。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题

    [workspace] $ cvs.exe -Q -z3 -d :pserver:user@server01:/cvsrepo/projectrepo co -P -N -d . -D "Thursday, June 13, 2013 9:24:00 PM UTC" Module1 Module2
    cvs.exe checkout: cannot open CVS/Entries for reading: No such file or directory
    

    仅指定一个模块,结帐工作和模块的内容直接位于由 Hudson 创建的工作区文件夹下。 (没有创建 Module1 文件夹)

    对于多个模块,只有在 -d 中指定了目录名称时才可以签出。使用默认的 Hudson 指定。是错误发生的时间。

    [workspace] $ cvs.exe -Q -z3 -d :pserver:user@server01:/cvsrepo/projectrepo co -P -N -d customDir -D "Thursday, June 13, 2013 9:53:46 PM UTC" Module1 Module2
    $ computing changelog
    Finished: SUCCESS
    

    指定 customDir 会在工作空间下创建一个 customDir 文件夹,其下有 Module1 和 Module2 文件夹。

    这种行为发生在命令行以及 Hudson 内部,因此它一定是 CVS 的一个特性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-02
      • 2012-02-13
      • 2015-01-09
      • 1970-01-01
      • 2011-09-15
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多