2012-11-18 55 views
2

我正在爲我的大學開發一個存儲庫管理系統,它將提供一個GUI來修改Subversion存儲庫中個別文件夾的權限,並使教授可以輕鬆地爲學生和TA添加目錄,適當的權限。爲了做到這一點,我需要能夠檢索現有svn存儲庫的目錄結構,並將其呈現在Web上。我看了幾種方法,並想知道是否有人有其他想法或建議。有些事情我已經看過:快速檢索svn目錄樹

每隔一小時,運行運行的腳本「SVN LS -R --xml」上的所有存儲庫並填充一個MySQL數據庫 正:

  • 快速加載頁面事後
  • 不佔用大量的磁盤空間
  • 易於管理權限,即該網站並不需要直接在所有

負觸摸的svn:

  • 我們的一些更復雜的存儲庫
  • 沒有「活」更新
  • 很慢具有運行是否有變化或不

在頁面加載,運行「svn LS - R --xml'並只檢索我需要的目錄來渲染當前頁面 正面:

  • 更新生活
  • 沒有cron作業佔用服務器

負:

  • 網站慢如糖蜜
  • 網絡服務器使用了更多的資源

直接讀取SVN數據庫 正面:

  • 快速頁面加載
  • 實時更新

負:

  • 難嗎?

我很好奇我還沒有看到或想到什麼替代品,因爲我覺得任何這些東西都會以某種方式相當可怕和不雅。如果可以避免的話,我也不想重新發明輪子。 謝謝!

回答

0

我會參考一個數據庫解決方案。 存儲庫的問題是同時訪問。使用存儲更新的數據庫,存儲庫爲您提供可靠的信息來源以檢索其佈局。

我已經爲實習做了大量的研究,並且使用數據庫幾乎總是最快的方式來閱讀回購。

爲了把它的僞代碼方面:

  • 讀庫
  • 裝載場
  • 打印佈局
  • 執行任務 - 和重複。

另一個需要考慮的選擇是使用一個數據庫來獨立跟蹤存儲庫的佈局。通過這種方式,您可以確保用戶不會碰到其他人的更新,並且可以保證存儲庫數據庫不受損壞。

1

如果你能SVN服務器上運行代碼,嘗試

svnlook tree /path/to/repo 

這是非常快的,因爲它直接從磁盤讀取存儲庫:)更多的使用細節見the documentation

0
  1. 你應該使用通過文件直接訪問庫:一個緩慢的高清//此相當(如果你有快速的CPU和HD)
  2. 使用SVN綁定的相應的腳本語言,做依賴在xml解析,因爲它們慢得多
  3. 不讀取整個樹,但保持一個導航層次結構和按需閱讀目錄,通常如果你閱讀整個層次結構,你最終成千上萬/目錄在通常對您的應用程序不感興趣的更深層次,所以您可以忽略它們並將它們顯示出來ñ需求(如用戶瀏覽此深)
  4. 如果你正在做SVN訪問修改使用您的訪問文件中的條目來了解你的重要目錄事先
1

首先,這是什麼呢?這是源代碼嗎?這是某種內容管理系統嗎?這是用於存儲和檢索文檔嗎?你沒有說。你想使用它取決於你需要什麼類型的工具。

如果這僅僅是爲了在教授,學生,助教和部門之間共享資源,請看看Dropbox。它簡單而有效。這可以讓教授決定他們想與誰分享什麼,並讓你脫離圖片。

假設這是源頭控制,有幾個GUI服務器管理系統,開始作爲免費:

這意味着什麼都不寫,沒有劇本,沒有MySql表。它已經爲你完成了。這總是最好的解決方案。

但是,如果這是用於源代碼控制,我會建議你看看Git而不是Subversion,因爲這是像Git這樣的分佈式版本控制系統比集中版本更好的時代之一像Subversion這樣的控制系統。

問題是訪問的問題之一。你有幾十位教授,數百名學生和一羣助教都想要進入。誰將爲所有這些人設置帳戶。每年有四分之一的學生將要離開,另有四分之一將進入。當然,還有一些學生總是來來往往。另外,還會有團隊。每個人都需要訪問。這是你不想要的行政頭痛。

Git通過向下傳播疼痛來幫助。在你的Git主存儲庫中,唯一有權訪問的人(至少是推送訪問權,拉訪問權可能更廣泛)將成爲教授。期。沒有其他人將被允許向該存儲庫提交更改。你已經從允許超過500人轉爲僅僅打了十幾人。而且,這些打打通常會停留在周圍,所以維護很少。

學生呢?這取決於教授。教授們可以讓他們的Git存儲庫供學生使用,學生可以將更改推送給教授的存儲庫。從那裏,教授可以將這些變化推給主人。

因此,首先,你有你的工具方面想不是準確地確定或者你是怎麼想的事會工作,但實際上你想要什麼:

  • 它是版本控制?
  • 它是文檔存儲庫嗎?
  • 這是一個Wiki嗎?
  • 它是一個內容管理系統嗎?
  • 這是一種分享各組之間重要文件的方式嗎?

然後,一旦你有了這個,就更容易挑選工具。如果你真的想要一個大學版本的控制系統,Git可能會更好地滿足你的需求,因爲你不想集中訪問控制,而是把責任分散下去。