2009-10-28 50 views
3

基本上我正在尋找一種在大型/複雜的SVN倉庫中更容易地找到事物的方法。我經常在小工具應用程序上工作,並且很快將它們移動到一個通用的SVN倉庫中,所以我想到的情況是在一個地方可能有幾十個甚至幾百個小工具應用程序,已經有一兩個,並且我已經失去了有時使用某些特定功能或庫或構建技術,甚至哪個工具做什麼的地方)。svn倉庫中子項目的元數據

有沒有人在svn中使用過元數據庫?什麼工作,什麼沒有?

我說的不僅是如何存儲元數據,但你用它做,就像生成HTML指標是什麼。對於存儲,我看到它的方式有3點基本的可能性:

  1. 把你的元數據,在簽入SVN倉庫一個純文本文件。(例如,一些xml文件具有特殊的文件約定,例如svn-metadata.xml)然後這將被版本化,但它使它獨立於svn。

  2. 使用SVN屬性來存儲元數據。(工程確定,並版本,但你被綁定到SVN。好的方面是,你可以專門配合元數據的單個文件。)

  3. 存儲元數據在外部位置如數據庫或一個wiki 。 (集成了更直接的存儲位置的功能,但不會進行版本控制,並綁定到該類型的存儲。)

我想在一個純文本文件可能使用RDF + RSS作爲元數據的,然後編寫一些定期掃描SVN存儲庫中的元數據的東西,將其索引到數據庫中,並生成一個易於使用的Web應用程序,以便於查找。

回答

2

其實我會混合svn屬性和(版本化)普通的類xml文件中的元數據。

1)關係到服務器的一切都可以方便地存儲在SVN屬性,如果你需要的可能不是在這裏如此。我的意思是當您繼續提交,檢出/導出時,對文件或目錄做一些特殊的屬性......例如,如果您想在每次觸摸特定文件時使用鉤子腳本來更新一些外部文檔。

像使用鉤子腳本維護單獨的信息跟上時代的通常避免了掃描整個數據庫更耗時的程序,它是服務器更少較重。

2)腳本來處理你的數據庫會在倉庫裏的文件一個更好的地方(XML,或任何你覺得最放心使用)。一個典型的例子是編譯所有工具或部分工具並構建安裝程序的腳本,將工具的具體信息存儲在易讀/易管理的文件中很有意義。正如你所指出的那樣,它必須儘可能地獨立於服務器(但你可以有一些鏈接,比如在最終的應用程序中包含修訂版來跟蹤它們的版本)。

這是我現在該怎麼進行,而且運作良好(不多闡​​述了鉤子腳本尚未雖然)。它有助於將兩者分開。

我只是不確定實現鉤子腳本的最佳語言是什麼。 Python(pysvn)很棒,但每次都強制解釋器重新加載並動態輸入 - 沒有檢查影響。我還找不到任何可靠的C#API,它也可以用於Mono,也許C或C++的Linux。它主要取決於我想要做什麼。