簡體   English   中英

SVN工作副本中已切換目錄的符號鏈接

[英]Symbolic link in svn working copy for a switched directory

我在單個存儲庫中處理了幾個(2-20)個非共享祖先項目,這些項目僅在一個地方共享存儲在資源庫中的GB二進制數據的公共資源。 這些項目利用svn switch將其適當的文件夾映射到共享二進制數據的單個svn URL。

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

(注意:另一個壞消息是,這些項目還利用svn 1.7可執行文件進行修改。)

我做了什么

我完成的工作是檢出項目A ,執行-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可執行二進制文件來進行自身的工作,因此,我盡可能地堅持這一點。

有沒有一種方法可以利用符號鏈接(或其他方式)來避免在硬盤驅動器上復制相同的GB數據? (如果可能,也避免下載。)


(1):我在Windows上; 為了簡便起見,假設在我的文件系統中 ,文件夾“ project_B”和“ project_A”是鄰居。 共享一個共同的祖先,並且該文件夾foobar在兩個項目中都是頂層。

我們遇到的情況是,多個項目可能相互嵌套。

我們使用的解決方案可能適合您;

  1. 對於項目,請照常從存儲庫中檢出它。
  2. 為將包含數據的路徑創建一個svn:ignore條目,並確保未跟蹤該路徑。
  3. 簽出到該路徑的數據。
  4. 對於其他項目,請執行步驟1和2,但應創建一個符號鏈接。

現在,您所有的項目都將忽略這些多余的文件,但是您仍然可以通過svn管理數據。

是的,這意味着您需要記住svn update && svn update data/以確保您的項目是最新的,但這並沒有什么麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM