2009-09-12 21 views
5

Tôi có một dự án mã riêng nhỏ trên Google. Đối với một SCM tôi sử dụng Mercurial. Và để xây dựng địa phương tôi muốn sử dụng nant.Cách sử dụng mercurial từ nant

Vì vậy, về cơ bản:

  1. Tôi muốn tải các file nguồn của tôi từ một kho lưu trữ nhanh nhẹn biết sử dụng một nhiệm vụ Nant
  2. Tôi muốn bằng cách nào đó có được số phiên bản của kho vì vậy mà tôi có thể lắp ráp một số phiên bản lắp ráp nhỏ xinh đẹp

Kịch bản xây dựng sẽ không được sử dụng để tích hợp liên tục mà chỉ được sử dụng cho các bản dựng hàng đêm và xây dựng sản xuất.

Thanks for the help

Trả lời

4

Tôi không biết Nant, nhưng trong (thực) ant, chúng ta chỉ cần sử dụng nhiệm vụ <exec> để gọi nhị phân hg. Tùy thuộc vào việc làm sạch bạn muốn bắt đầu, bạn có thể clone hoặc chỉ pull và thực hiện hg id -i giúp bạn có được số sửa đổi một cách rõ ràng. Một điều cần xem xét là sử dụng các liên kết lưu trữ trên giao diện web từ xa (chủ yếu là lệnh lưu trữ hg qua HTTP) và chỉ sử dụng wget (không phải nhiệm vụ tương đương) để kéo xuống lưu trữ mẹo, có liên kết dễ dàng nhất quán và sau đó bạn có thể lấy id sửa đổi từ bên trong tệp hg_archival.txt của kho lưu trữ.

+0

Điều đó sẽ hoạt động nhưng đồng thời ngụ ý rằng người dùng cuối của tập lệnh sẽ phải cài đặt thủy ngân cục bộ. Tôi đã thành thật hy vọng rằng một số phần mở rộng taks đã có sẵn – Dejan

+0

Tôi không nghĩ rằng bạn sẽ tìm thấy bất kỳ mã phi mercurial mà nói giao thức dây mercurial hiện tại, và nó trong python. Vì vậy, bạn có thể thử chạy nó trong IronPython, nhưng tại thời điểm đó bạn đang nói nhiều công việc như là một cài đặt mercurial. Tôi sẽ viết lại soln dựa trên câu trả lời riêng của mình. –

2

Vì bạn đang tìm kiếm các mã Nant thay vì gọi tắt vào nhị phân lanh lợi, tôi muốn đề nghị chỉ sử dụng <get> nhiệm vụ Nant để kéo xuống đỉnh của repo của bạn như thế này:

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

và bên trong cần có một tập tin .hg_archival.txt có chứa một cái gì đó như thế này:

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

mà từ đó bạn có thể nhận được một hashId phù hợp để sử dụng trong xây dựng thương hiệu một xây dựng.

Thật không may, tôi không tìm thấy các liên kết tải xuống lưu trữ trên mã google, nhưng chúng khá chuẩn trong giao diện web của mercurial (và bitbucket), vì vậy tôi tưởng tượng chúng ở đâu đó.

0

Mặc dù điều này không được áp dụng cho người ban đầu đặt câu hỏi, tôi cần phải làm điều gì đó tương tự ... nhưng tôi cần sửa đổi số (có, tôi biết số đó là kho lưu trữ cụ thể, nhưng trong bối cảnh mà kịch bản đã nhận được sử dụng này là tốt). Tôi cũng không có vấn đề gì với việc gọi hg.exe, bởi vì mọi nơi có thể chạy từ hg.exe đều có sẵn.

Các kịch bản Nant cuối cùng tôi đã kết thúc với là thế này:

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

Thật không may, có vẻ không phải là một cách trong NUnit để đọc trực tiếp vào một tài sản, vì vậy tôi đã phải sử dụng văn bản trung gian và xử lý nó vào một thuộc tính bằng cách sử dụng loadfile. Tôi cũng đã phải thêm "CurrentMercurialRevision.txt" vào tệp .hgignore ... nhưng nếu bạn đã quen thuộc với Mercurial, bạn có thể đã đoán được điều đó. ;-)

Hy vọng điều này sẽ giúp ai đó.

+1

Tôi đã xem qua chuỗi này khi tìm kiếm một trong các câu hỏi của tôi. Có một cộng đồng msbuild tuyệt vời được viết đặc biệt cho "Mercurial" [ở đây] (http://msbuildhg.codeplex.com/). Sử dụng điều này bạn không phải sử dụng bất kỳ tập tin trung gian cho nhiệm vụ này. –

Các vấn đề liên quan