2008-09-22 126 views
8

在工作中,我們安裝了安裝了IIS和Subversion的Windows Server 2003。我們用它來發布和測試我們的ASP.NET網站 。每個程序員都將Tortoise安裝在他的PC上,並且可以更新/提交內容到服務器。託管存儲庫工作正常。 但是,保存在這些存儲庫中的文件需要複製到我們的本地IIS(虛擬目錄)。如何將subversion版本庫發佈到本地IIS?

什麼是發佈這些Subversion版本庫到我們本地IIS的簡單方法?

編輯:
感謝puetzk我補充說,每得到一個提交發生時間(檢查subversion documentation約鉤子)執行一個簡單的bat文件。我的蝙蝠文件只包含:

echo off 
setlocal 

:: Localize the working copy where IIS points) 
pushd E:\wwwroot\yourapp\trunk 
:: Update your working copy 
svn update 

endlocal 
exit 

回答

12
  1. 只要保持在Web服務器的文件區域作爲工作副本,只要你想「發佈」在它執行了SVN。將它配置爲隱藏.svn文件夾的內容(如果它們對您來說看起來不整潔)(我不明確如何做到這一點,但我認爲它可以完成)。他們已經將文件系統隱藏起來了,可能會考慮到這一點。

  2. 如果你想讓它真正自動(只要有人提交就更新),在SVN服務器上使用post-commit鉤子腳本來啓動第一個進程。

其他人在評論中建議使用導出而不是結帳。這也可以起作用,避免.svn混亂,但有兩個缺點。其一,它必須每次重新下載整個內容,而不僅僅是修改過的文件(因爲它沒有保留.svn目錄來記住它的內容)。如果你有很多文件,這會慢很多。二,更新以原子方式替換文件(將新版本寫入.svn/tmp,然後將其移至原位)。導出將文件逐漸寫入其下載目標。這意味着導出可能會向不正確的時間瀏覽它的人發送不完整的文件。

6

SVN不支持IIS;你可以但是run the standalone svnserve server as a windows service

有關於它的SVN FAQ entry,並且此文章Vertigo Software blog也許也有幫助。

UPDATE: 你澄清後,我看到你正在尋找一種方法來自動更新它在檢查後在服務器上的代碼。看看CruiseControl.NET,看着它看起來像它應該做的subversion integration tutorial後。你想要什麼。

更新2:本教程描述了integrating Subversion, CruiseControl.NET and Nant

+0

除非我誤解,@jdecuyper正在尋找一種方式來發布自己的信息庫,而不是一個辦法來承載它的內容。 – puetzk 2008-09-22 23:35:19

+0

@puetzk是對的。爲了更加清晰,我編輯了我的問題。 – jdecuyper 2008-09-22 23:46:30

+0

啊,我想我誤解了。在這種情況下,@ puetzk的答案是絕對正確的。您也可以使用持續集成工具包;我在我的回覆中加入了這一點。 – Aeon 2008-09-23 00:05:53

1

使用可以使用免費Visual-SVN Server快速安裝Subversion與Apache前端。它還有一個很好的MMC管理單元用於管理服務器和存儲庫。

您將能夠使用HTTP或HTTPS訪問subversion,但端口號必須與本地IIS使用的端口號不同(Visual-SVN服務器的默認端口爲8080)。

如果您確實需要使用本地IIS端口80訪問存儲庫,則可以嘗試SVN-IIS,它充當您的IIS和Apache之間的橋樑。儘管我自己並沒有試過這個。

2

也許SVNIsapi可以解決這個問題(http://www.svnisapi.com)。因爲它只使用IIS安裝,因此您不需要APACHE服務器或SVNSERVER服務。其次,應該可以將ASP.NET ISAPI插件堆疊到SVNISAPI的處理上,以便在從存儲庫讀取後解釋ASP.NET(.aspx)頁面。

乾杯 保羅