2013-03-26 90 views
0

我在一個單獨的repo中處理非共享祖先的幾個(2-20)項目,它們共享存儲在存儲庫中的GB二進制數據的公用資源一個地方。這些項目利用svn switch將其適當的文件夾映射到共享二進制數據的單個svn URL。svn工作副本中的符號鏈接切換的目錄

我想在我的工作副本中執行同樣的操作時檢出多個副本,從而避免重新下載已有的二進制數據的相同GB。

(注:另一個不好的消息是,該項目還利用一個SVN 1.7可執行文件,以便修改自己。)

我做了什麼

我所做的是檢查出項目一 ,做開關-es;然後檢查出項目B,但是取而代之的是一般的開關,做的是svn switch --set-depth=empty --ignore-ancestry http://foobar,所以這個項目的工作副本B知道它應該指向哪裏。然後,我做了mv foobar old_foobarmklink /D foobar ../project_A/foobar。 (1)

現在的問題

現在的問題是,如果我在,用符號鏈接的廁所做svn status,它會列出所有文件中的「foobar的」非版本(如?狀態)。

我也使用TortoiseSVN,它顯示圖標疊加爲黃色三角形「!」 (這意味着可能會被解決?),但是我在svn status中沒有實際的衝突(也沒有樹衝突),並且如果我在「foobar」中做了svn up,它說它是最新的。

約束

二進制文件容器不經常改變,即使他們這樣做,該變化通常是向後兼容。因此,對於工作副本對它們中的文件版本有錯誤的想法,這至少不是問題(至少對我而言)。

我應該不是更改項目或回購結構,因爲我不允許「正式」這樣做。

我使用svn 1.7並且由於項目實際上使用自包含的svn可執行二進制文件來處理它們自己,所以我想堅持這一點,如果可能的話。

問題

是否有利用以符號鏈接(或其他任何東西),以避免重複相同的數據綠帶我的硬盤驅動器上的方法嗎? (也可以避免在可能的情況下下載。)


(1):我在Windows上;爲了方便起見,假設我的文件系統中的,文件夾「project_B」和「project_A」是鄰居即ie。共享一個共同的祖先,該文件夾foobar是兩個項目的頂級水平。

回答

1

我們有多個項目可能互相嵌套的情況。

我們使用可能工作好你的解決方案;

  1. 對於某個項目,請按正常方式將其從存儲庫中檢出。
  2. 創建將包含數據,並確保路徑不跟蹤的路徑svn:ignore項。
  3. 檢出數據到該路徑。
  4. 有關其他項目,執行步驟1和2,但創建符號鏈接代替。

現在你所有的項目都會忽略這些額外的文件,但你仍然可以通過svn管理數據。

是的,這意味着你需要記住svn update && svn update data/,以確保您的項目完全是最新的,但它不是麻煩了。

+0

嗯,可以'的svn:ignore'存儲在*工作副本* ** **只有在這個解決方案?未提交給*存儲庫*? (因爲我不應該改變工作過程中我的[幾百]同事)。 – n611x007 2013-07-17 06:46:59

+0

我得知有一個每用戶忽略設置,這可能是合適的一個,http://stackoverflow.com/questions/52398/ignore -svn-ignore-possible – n611x007 2013-07-17 07:14:01

+0

數百名同事?哇。 那麼將它作爲一個組織範圍的解決方案值得提出嗎? 我認爲'全球ignores'指令可能是一個可行的解決方案。即使您有其他具有相同文件夾名稱的項目(該*應該*成爲存儲庫的一部分),只要您明確地添加它們,它們就可以正常工作。 – MrTrick 2013-07-18 01:36:18