2011-06-03 36 views
0

我们在我们的一个项目中使用mercurial作为源控制。我们正在尝试使用巡航控制.net为此项目设置持续集成。巡航控制中的授权要求错误。Mercurial

而这样做,我们设置源控制,

<sourcecontrol type="hg"> 
    <repo>path of repository</repo> 
    <workingDirectory> 
     working directory path 
    </workingDirectory>   
    </sourcecontrol> 

但是,当我尝试建立我得到了这样的错误

Error Message: ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: abort: http authorization required 
. Process command: hg pull --noninteractive repository path 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Mercurial.Mercurial.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request) 

我认为错误的事情,因为我不会放弃源控制块中的用户名和密码。但我不知道如何授予授权凭证,请任何人都可以帮助我解决这个问题。

回答

1

一个选项是o将用户名和密码放在URL中 - 这不是Mercurial的事情,它一般是HTTP URL的一部分。这里有一个例子:

http://username:[email protected]/path/to/repo 

其他选项包括使用巡航控制用户的~/.hgrc文件的[auth]部分,但把它在URL中可能比较容易(虽然不是非常安全)。

+0

因此,为了在hgrc文件中添加[auth]标签,我们必须首先克隆存储库。这样对吗?所以不用克隆,当我点击巡航控制.net的强制按钮时,有任何方法可以自动克隆。 – 2011-06-04 04:10:06

+0

你可以把auth部分放在任何hgrc中,包括你的每个用户。您的ci系统以某用户身份运行(希望不是root用户,但可能),并且该用户拥有主目录。将.hgrc文件放在那里并添加auth部分。 – 2011-06-05 02:18:25