用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檔如下:
至於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>
留言
張貼留言