用VirtualSVN Server架Subversion,用MSBuild取出程式碼

最近想放棄VSS,改用SubVersion。所以就找了一個專案來試一下。要用SubVersion來管理程式碼是蠻簡單的。如果你是用Visual Studio的話,可以使用Ankh。它可以整合到Visual Studio中並使用SubVrsion來管理程式碼。

至於SubVersion的Server端,最方便使用的應該就是VirtualSVN Server了吧。只要下載並安裝就可以了。

如果要使用MSBuild來進行專案建置的話,原本的MSBuild並不支援SubVersion,其實就連VSS它也不支援。這些都必須取得第三方套件來用,才能由這些程式碼管理工具中取得程式碼來進行編譯。所以可以去取得MSBuildTasks套件來安裝使用。

老實說在MSBuildTasks中的說明文件,它只有說明這些套件的一些屬性及方法。完全沒有範例。實在很難體會如何去使用它來透過SubVersion Server下載程式碼。所以就到網路上找了一些資料,可是這篇文件中的MSBuild專案檔好像也是不行。因為它沒有指定Svn.exe的路徑,可能是因為它不是用VirtualSVN Server吧。

後來才發現,原來要指定這個路徑才行。改了一下果然就可以下載了。只是一開始以為要用SvnUpdate這個指令,因為我只是想更新程式碼,而不是想要簽出。但後來發現要取得程式碼的話,還是要用 SvnCheckout才行。

MSBuild xml檔如下:



<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

<!--
Version : 1.0
Revision:

-->

<PropertyGroup>
<RootDir>./</RootDir>
<SlnName>TX4</SlnName>
<ExtProgramPath>D:\Ext Programs\</ExtProgramPath>
<SvnVersion></SvnVersion>
<SvnDBPath>https://TWSNHFMITS02.Securities.HQ/svn/TX4DB/</SvnDBPath>
<SvnUser>nant</SvnUser>
<SvnPassword>nant</SvnPassword>
<SettingPath>.\</SettingPath>
</PropertyGroup>

<UsingTask TaskName="MSBuild.Community.Tasks.Subversion.SvnUpdate" 
        AssemblyFile="$(ExtProgramPath)MSBuilt_VSS\MSBuild.Community.Tasks.dll"/> 
<UsingTask TaskName="MSBuild.Community.Tasks.Subversion.SvnCheckout" 
        AssemblyFile="$(ExtProgramPath)MSBuilt_VSS\MSBuild.Community.Tasks.dll"/> 
        
<!--
<Import Project="$(SettingPath)$(SettingsName)"/>
-->

<Target Name="UpdateSource1" >
<Message Text="Get Subversion Version : $(SvnVersion)"/>
<Message Text="RootDir : $(RootDir)"/>
<Message Text="Path : $/$(SlnName).root"/>
<Message Text="$(SvnDBPath) $(SvnUser) $(SvnPassword)"/>
<SvnUpdate
RepositoryPath="$(SvnDBPath)"
Username="$(SvnUser)"
Password="$(SvnPassword)" 
Revision="$(SvnVersion)"
LocalPath="$(RootDir)" 
ToolPath="C:\Program Files\VisualSVN Server\bin"
/>
</Target>

<Target Name="GetSource" >
<Message Text="Get Subversion Version : $(SvnVersion)"/>
<Message Text="RootDir : $(RootDir)"/>
<Message Text="Path : $/$(SlnName).root"/>
<Message Text="$(SvnDBPath) $(SvnUser) $(SvnPassword)"/>
<SvnCheckout
RepositoryPath="$(SvnDBPath)/trunk/$(SlnName)/trunk"
Username="$(SvnUser)"
Password="$(SvnPassword)" 
Revision="$(SvnVersion)"
LocalPath="$(RootDir)$(SlnName)" 
ToolPath="C:\Program Files\VisualSVN Server\bin"
/>
</Target>


</Project>

留言

這個網誌中的熱門文章

DOS Batch指令檔中如何記錄log資訊

用捷徑方式執行需帶入命令列參數的Windows Form程式

使用regular expression來match中括號(square bracket)