2009-04-24 30 views
3

我使用ASP.NET Web部署項目與TortoiseSVN和VisualSVN,但這是一個關於在Subversion中生成的文件的一般問題。如何讓Subversion使用自動生成的文件?

Web部署項目會自動生成網站的並行「部署」版本,並將所有代碼剝離並編譯到單個程序集中。我的文件結構是:

  • 幹線
  • 中繼線/ MyProject的(網站根目錄)
  • 中繼線/ MyProject_deploy(部署項目根)
  • 中繼線/ MyProject_deploy /釋放(部署網站根,自動生成)

下面是問題:構建時(在發佈模式下)重新生成MyProject_deploy/Release。該目錄被刪除並重新創建,所以我失去了所有的.svn元數據;當我去提交時,我得到了狀態「阻塞」,這是我查過的並且意味着在服務器上有一個與託管文件夾名稱相同的非託管本地文件夾。

(我可能只是忽略了發行文件夾,但我想要做的FTP直接從Subversion服務器部署。)

什麼是應對顛覆自動生成的文件的最好方法?

回答

14

設置svn:ignore屬性。不要將它們添加到您的版本控制系統。構建過程生成的任何內容都不屬於此處。屬於那裏的是完成構建過程所需的東西。

我建議像CruiseControl.NET一樣添加一個連續的整合服務器 - 它可以從源代碼構建項目,然後從中進行部署。這將使您使用2個最佳實踐而不是1個,並且仍然可以解決您的問題。

1

如果您使用的是Visual Studio,是否可以定義生成前和生成後事件以便在生成之前將.svn目錄(或多個目錄)從發佈版本移出,然後再回來?

1

使用安裝項目創建Windows安裝程序輸出時,這也是一個問題。

一個選項是更改輸出文件名,以便將生成的文件轉儲到您的部署項目根目錄中,而不是轉儲到名爲「Release」的子文件夾中。

在安裝項目的情況下,我生成了一個單一的MSI文件,這個工作得很好 - 沒有文件夾被刪除/重新創建,所以沒有SVN錯誤,它只是在部署項目中只有兩個文件根文件夾。