2011-12-21 64 views
5

由於一些教育方面的原因,我前段時間開始創建自己的圖書館。它起初是一個帶有一些可用類的簡單庫,但由於它每天都在增長,而且我已經在一些項目中使用過它,所以無法跟蹤這些變化,因爲我沒有使用它SVN。什麼是從實際項目中保存圖書館的最佳做法

現在我已經開始使用SVN了我想將庫和項目添加到不同的SVN存儲庫。每個項目一個(因爲圖書館也是一個項目)。

將我的圖書館從項目中分離出來的最佳做法是什麼?每個項目都有一個目錄,其中包含所有類型的庫。 所以什麼我的最佳做法如下:

  • 我可以添加/庫/框架/目錄,並將其設置在項目SVN忽略,然後簽出庫在該目錄中(這是甚至可能嗎? )
    • 專業:每個項目都有自己的框架,如果框架可能改變它不會破壞項目中的任何代碼。
    • con:如果我有100個項目,他們都需要重要的更新(安全明智),我必須手動更新所有這些項目。
  • 我也可以在某個服務器上籤出庫,並在項目SVN忽略它之後符號鏈接/庫/框架/目錄。
    • 專業版:一次更新將修復所有項目以防重大更新。
    • 精讀:正如上面說:一個更新將修復/更改所有項目...
    • 精讀:如果有什麼項目需要設置到另一臺服務器(不是我...)

任何有什麼想法?

回答

3

我通常爲此使用svn externals。所以我會在項目中創建庫目錄,然後爲單獨的庫和組件添加外部定義。

這不一定解決您更新多個項目的問題,但IMO認爲這是一個可以通過自動化處理的單獨問題,並且在我們正在討論組織/版本控制/開發時不會發揮作用。

+0

請這麼說,如果我不明白,而是這是真的,在我的項目目錄的svn更新命令將不會更新SVN外部? 剛纔我問了一下,我以爲我的-interfaces-不會在同一個主版本中更改,如果我真的需要更改一個-interface-我也可以爲這些項目設置特定的標記/分支由於他們的要求,仍然需要相同的界面。 – Niels 2011-12-21 17:59:25

+2

默認情況下它會更新外部。因此,根據您的開發方法以及您如何組織外部項目,您可能希望將某些東西固定到特定標籤或保證維護BC的分支。儘管你可以在更新命令中使用'--ignore-externals'標誌,但它不會獲得最新版本。 – prodigitalson 2011-12-21 18:02:21

1

其實我前一陣子也是一樣的。

我通過.htaccess文件解決它(我使用Apache-2作爲Web服務器[1]),可以 指定類似

php_value include_path /absolute/path/to/libraries:/absolute/path/to/my/project:/lib/3rd_party 

等,這是非常偉大的有你的圖書館在不同的git/svn簽出。

[1] http://httpd.apache.org/docs/2.0/howto/htaccess.html

+0

我知道你的解決方案,我有時使用它,但在php的界限內使用'set_include_dir'函數,但我主要關心的是多個服務器。如果您有5臺不同的服務器,您是否需要在所有服務器上進行結賬?在這種情況下,您仍然需要更新任何庫更新中的每臺服務器,這比更新所有項目更新少得多... – Niels 2011-12-21 18:06:29

相關問題