巡航控制 .net git 日志无效的版本范围

4
我已经把我的Cruise Control项目搞砸了。
在转移到新的源代码控制主机时,我正在更新项目存储库的Git URL。 我有点过于复制和粘贴,并将错误的存储库URL粘贴到了源处。 当下一次Cruise Control进行拉取并合并了许多不应该存在于存储库中的内容时,问题就出现了。
一旦意识到我的错误,我想没问题,只需删除有问题的存储库并使用正确的URL进行克隆即可。
但是,当Cruise Control决定是否需要进行新构建时,它似乎记住了上一个混乱存储库的最后一个变更集,并且会抛出错误消息。 这就是我猜测发生的事情。 在发出git log命令时,它会说在清理后的存储库中找不到变更集。
它发出的命令是:
git log 66cd57438ea42b4f8cb6dbf033dc1162f61a4d54..origin/master --name-status --pretty=format:"Commit:%H%nTime:%ci%nAuthor:%an%nE-Mail:%ae%nMessage:%s%n%n%b%nChanges:" -m

Git的回应是

Source control operation failed: fatal: Invalid revision range 66cd57438ea42b4f8cb6dbf033dc1162f61d5e65..origin/master

这个changeset id在正确的代码库中肯定不存在,但是它存在于我错误合并的代码库中。

我该如何让Cruise Control .net忘记这个错误的changeset id呢?

1个回答

8

CruiseControl.net会将最后一次提交的id存储在每个项目的“state”文件中。 这些通常是文本文件,驻留在服务器目录(c:\Program Files (x86)\CruiseControl.NET\server)中。

例如, 一个状态文件可能包含:

<IntegrationResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" scmError="false">
  <ProjectName>Project1</ProjectName>
  ...
  <Label>1.2.3.4</Label>
  <Parameters>
    ...
    <NameValuePair name="$LastChangeNumber" value="66cd57438ea42b4f8cb6dbf033dc1162f61a4d54" />
  </Parameters>
  <LastSuccessfulIntegrationLabel>1.2.3.4</LastSuccessfulIntegrationLabel>
  <SourceControl name="commit" value="66cd57438ea42b4f8cb6dbf033dc1162f61a4d54" />
</IntegrationResult>

您可以修改此文件,以包含与您正确的存储库相关的提交ID;但是,在此之前必须停止CruiseControl。一旦它们全部更改完毕,重启服务器/服务,一切都应该正常。

唯一需要更改的行是:

  <SourceControl name="commit" value="66cd57438ea42b4f8cb6dbf033dc1162f61a4d54" />

其他属性可以不变;它们只是上次构建的属性。

非常感谢您。我的步骤是:停止CC服务,删除文件,启动CC服务,强制构建,然后它就正常工作了。 - broadband
哈哈哈,嘿@Simon Laing - 猜猜我为什么在这里!(Paul-V) - Immortal Blue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接