摘要
我在TeamCity中建立了一个使用Mercurial作为VCS的版本,由于以下两个原因之一,它反复失败:
-
hg init
-存储库已经存在,但是我在此之前删除了整个目录,因此它肯定不存在。
-
hg pull
-等待锁超时,但是它正在等待的锁似乎是它自己的锁。
我真的希望有人曾经遇到过这个问题,或者也许能够给我一些解决问题的想法。
设置
我看到的两个问题如下:
1.汞初始化失败
步骤:
- 从buildagent手动删除整个工作目录,因此是.hg文件夹,是父文件夹。
工作文件夹现在甚至不存在,因此TeamCity必须完全重新创建该文件夹。
- 在TeamCity上运行构建,并清除所有选定的文件。
- 开始构建,创建目录并调用
hg init
。
- 由于“存储库已存在”而导致hg初始化失败的错误消息。
- 当我查看目录时,可以看到.hg文件夹以及其中的一些文件,包括wlock文件。
2。拉动失败
步骤:
- 将问题1中的工作目录保留在适当位置,包括.hg目录。
- 确保删除所有锁定文件,并已运行hg recovery,以防万一。
- 在TeamCity上运行构建,而无需清理目录。
- 日志显示了hg拉启动文件和捆绑文件,但也显示“正在等待主机'BUILDAGENT'上进程'3408'持有的E:\ blah的工作目录上的锁
3408是一个示例,该数字每次都会更改,并且对应于似乎在执行拉动的hg.exe进程。
- 最终,在出现大量捆绑和文件消息后,我会收到一条消息,提示它等待锁已超时。
但是,当然,它正在等待的锁似乎是它自己持有的锁!
- 如果在此期间删除wlock文件,我将看到消息“ X秒后获取锁定”,并在它之后立即“等待主机'BUILDAGENT上的进程'3408'持有的存储库E:\ blah上的锁定” '。最终它将失败,并显示一条有关被放弃的交易的消息。
有人有什么想法吗?