2009-09-12 16 views
5

Biraz özel Google kod projem var. SCM için Mercurial kullanıyorum. Ve yerel yapı için nant kullanmak istiyorum. Yani temeldencur mercival nasıl kullanılır?

:

    ben araya böylece her nasılsa arşivin revizyon numarasını almak istiyorum bir nant görev
  1. kullanarak bilinen bir cıva deposundan benim kaynak dosyalarını indirmek istiyorum
  2. güzel bir küçük montaj sürümü numarası

Yapı senaryosu sürekli entegrasyon için kullanılmayacak, sadece gece yapımları ve üretim için. yardım

cevap

4

NAnt bilmiyorum ama (gerçek) karınca, sadece hg ikili çağırmak için <exec> görevi kullanmak için

teşekkürler. Temizlemeye bağlı olarak, clone veya sadece pull'u başlatabilirsiniz ve hg id -i'u kullanarak revizyon numarasını temizleyebilirsiniz. Göz önünde bulundurulması gereken diğer bir şey, uzak web arabirimindeki arşiv bağlantılarını kullanmaktır (temel olarak HTTP üzerinden hg arşiv komutu) ve sadece kolay bir tutarlı bağlantıya sahip olan uç arşivi aşağı çekmek için wget (eşdeğer bir görev değil) kullanın ve sonra revizyon kimliğini arşivin hg_archival.txt dosyasından alabilirsiniz. Eğer cıva ikiliye kapalı çağırmak yerine NANT kodu arıyorsanız yana

+0

Bu işe yarar ancak aynı zamanda, komut dosyasının son kullanıcısının yerel olarak yüklü olan civatası olması gerektiği anlamına gelir. Bazı taks uzantıları – Dejan

+0

mevcut olduğunu umuyorum Ben şu anda mercurial tel protokolü konuşur herhangi bir mücellit kodu bulacaksınız sanmıyorum, ve python içinde. Bu yüzden, IronPython'da çalıştırmayı deneyebilirsiniz, ancak bu noktada mercurial yüklemesi kadar çok şey konuşuyorsunuz. Ayrı bir cevabım olsun, çözüme dayanarak yazacağım. –

2

, böyle senin repo ucunu aşağı çekmek için NANT en <get> görevini kullanarak sadece öneririm:

<get src="http://bitbucket.org/tortoisehg/stable/get/tip.zip" dest="latest.zip" /> 
<unzip zipfile="latest.zip" todir="latest"/> 

ve içeride böyle bir şeyi içeren bir .hg_archival.txt dosyası olmalıdır: bir yapı marka kullanılmak için uygun bir Hashid alabilirsiniz hangi

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

.

Maalesef, google kodundaki arşiv indirme linklerini bulamıyorum, ancak mercurial (ve bitbucket) web arayüzlerinde oldukça standartlar, bu yüzden bir yerlerde olduklarını hayal ediyorum.

0

Bu, soruyu soran kişiye uygulanabilir olmasa da, benzer bir şey yapmam gerekiyordu ... ama sayısal düzeltmeye ihtiyacım vardı (evet, sayının depoya özgü olduğunu biliyorum, ancak betiğin kullanıldığı bağlamda bu iyiydi). Ayrıca hg.exe çağrısı ile hiçbir problem yaşamadım, çünkü bu her yerde hg.exe'den çalıştırılabilir.

Sonunda bitti NAnt komut dosyası şuydu:

<exec program="hg.exe" output="CurrentMercurialRevision.txt"> 
    <arg value="id" /> 
    <arg value="-n" /> 
</exec> 
<loadfile file="CurrentMercurialRevision.txt" property="buildNumber" /> 

Maalesef orada bir özellik doğrudan okumak için NUnit bir yol olarak görünmektedir, bu yüzden ara metni kullanmak zorunda değildir loadfile dosyasını kullanarak dosyaya dönüştürün. Ayrıca "CurrentMercurialRevision.txt" dosyasını .hgignore dosyasına eklemek zorunda kaldım ... ama eğer Mercurial'ı tanıyorsanız, muhtemelen bunu zaten tahmin etmiştiniz. ;-) Umarım bu yardımcı olur.

+1

Sorularımdan birini ararken bu konuya rastladım. "Mercurial" için özel olarak yazılmış harika bir msbuild topluluğu taksitleri var (burada) (http://msbuildhg.codeplex.com/). Bunu kullanarak, bu görev için herhangi bir ara dosya kullanmanız gerekmez. –