2013-02-20 72 views
2

我有一台运行Windows 2008R2的CruiseControl.Net生成机器。来源在git存储库中。 CruiseControl使用cygwin访问git存储库。除标签外,一切运作良好。我想每一个标签创建成功,所以这里是的ccnet.config的一部分:无法创建标记

<sourcecontrol type="git"> 
    <repository>git://xxx.xxx.xxx.xxx/Project</repository> 
    <executable>C:\cygwin\bin\git</executable> 
    <branch>projectName/branchToBuild</branch> 
    <workingDirectory>Sources</workingDirectory> 
    <autoGetSource>true</autoGetSource> 
    <tagOnSuccess>true</tagOnSuccess> 
    <tagCommitMessage>CCNet Build {0}</tagCommitMessage> 
    <tagNameFormat>project/builds/v{0}</tagNameFormat> 
    <committerName>CCNet</committerName> 
</sourcecontrol> 

但是构建失败,错误:

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: error: unable to create temporary sha1 filename : No such file or directory 

error: unable to write tag file 
. Process command: C:\cygwin\bin\git tag -a -m "CCNet Build 6.2.18.0" project/builds/v6.2.18.0 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GitCreateTag(String tagName, String tagMessage, IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.LabelSourceControl(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Build(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request) 

出了什么问题?如果我从命令行执行相同的命令,一切工作正常。

谢谢!

加入这MSBuild项目文件解决:

<Exec Command='C:\cygwin\bin\git tag -a -m "CCNet Build" project/builds/v$(CCNetLabel)' ContinueOnError="true"/> 
<Exec Command='C:\cygwin\bin\git push origin tag project/builds/v$(CCNetLabel)' ContinueOnError="true"/> 

回答

1

这看起来像正在运行CCNET服务不具有对存储库的写访问的用户。

+0

它具有写入权限,因为该目录是由他创建的。所有的文件都被他拉出来检查出来。 – gor 2013-02-20 17:36:02

+0

我不太了解git的cygwin版本(也许是/或\问题)。你可能想尝试在Windows上运行良好的msysgit。我也在CCNet的git源代码控制任务的开发过程中使用这个 – dna 2013-02-20 17:43:28

+0

我有msysgit的另一个问题。它挂在推。 – gor 2013-02-20 18:30:14