2010-12-02 12 views
7

Otomatik yüklemeler için CruiseControl.NET 1.5.7256.1'i kurmaya çalışıyorum. Projem Mercurial saklanır ve kullanıyorum ccnet.config aşağıdadır:CruiseControl.NET'in Mercurial ile nasıl çalıştığı: "Kaynak kontrol hatası (GetModifications)"

<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 
    <project name="Slider" webURL="http://localhost/ccnet"> 
     <triggers> 
      <intervalTrigger seconds="3600" /> 
     </triggers> 
     <sourcecontrol type="hg" autoGetSource="true"> 
      <executable>C:\Python26\Scripts\hg.bat</executable> 
      <repo>c:\repos\slider</repo> 
      <workingDirectory>c:\ccnet\slider</workingDirectory> 
     </sourcecontrol> 
     <tasks> 
      <msbuild> 
       <executable>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe</executable> 
       <workingDirectory>c:\ccnet\slider</workingDirectory> 
       <projectFile>Slider.sln</projectFile> 
       <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs> 
       <targets>Slider</targets> 
       <timeout>900</timeout> 
       <logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger> 
      </msbuild> 
     </tasks> 
    </project> 
</cruisecontrol> 

Ama yapı zorlamak zaman, bu hatayı alıyorum: hata muhtemelen tırnaksız kaynaklanır

[Slider:WARN] Source control failure (GetModifications): Source control operation failed: < was unexpected at this time. 
. Process command: C:\Python26\Scripts\hg.bat log -r 0:123 --template <modification><node>{node|short}</node><author>{author|user}</author><date>{date|rfc822date}</date><desc>{desc|escape}</desc><rev>{rev}</rev><email>{author|email|obfuscate}</email><files>{files}</files></modification> --noninteractive 
[Slider:INFO] Integration complete: Exception - 12/2/2010 1:19:08 PM 

--template parametresindeki açılı ayraçlar, ancak CC.NET'in bu parametreye ilişkin alıntılar yapmasını nasıl sağlayabilirim? yüklü Mercurial ile başarıyla CruiseControl.NET 1.5.7256.1 kullanıyorum

@echo off 
rem Windows Driver script for Mercurial 

setlocal 
set HG=%~f0 

rem Use a full path to Python (relative to this script) as the standard Python 
rem install does not put python.exe on the PATH... 
rem %~dp0 is the directory of this script 

%~dp0..\python "%~dp0hg" %* 
endlocal 
+0

hg.bat içeriği neye benziyor? – bluevoodoo1

+0

Hg'yi çalıştırmak için Python yorumlayıcısını çağırır. IIRC, Python paket yükleyicisi tarafından oluşturuldu. İçeriği pazartesi günü yayınlayabilirim. –

+1

Eh, Hg ile gayet iyi çalışan ve yapılandırması da kolay olan TeamCity'ye geçtim. CC.NET ile neyin yanlış gittiğini bilmek güzel olurdu. –

cevap

3

: ===============

İşte hg.bat var Bu msi, hg.exe tam yolunu kullanarak executable değeri.

buffer.AddArgument("--template", HistoryTemplate) 

ve bunun gibi komut satırı için biçimlendirilir:

project\core\sourcecontrol\Mercurial\Mercurial.cs yılında şablon böyle kullanılır

string.Format("{0}{1}{2}", arg, separator, StringUtil.AutoDoubleQuoteString(value)) 
ayırıcı " " olduğunu

ve AutoDoubleQuoteString şablonu teklif edecek Bu yüzden hatanın nedeni olamaz.

GÜNCELLEME 1

Aslında AutoDoubleQuoteString alıntı şablon, ancak mevcut sürümde bunu yapmaz gerekir. Ayrıca, hg.exe kullanırken yapı başarılı olsa bile, bir komut isteminde gerçek komut satırını çalıştırmak aynı hatayı döndürür.

CruiseControl.NET 1.6.7981.1 2 sunulduğunu GÜNCELLEME (release notes bakınız) ve şablonu artık bir dosya olarak geçirilen zamandan beri, sadece iyi çalışıyor (en azından benim PC'de).

+0

Ah, hmm. O zaman Hg yüklü olduğum şekilde olmalı. –

İlgili konular