2012-07-11 26 views
5

我想面膜爲電路面膜(我認爲) - 讓我有一個方便的圖表有沒有這樣的文件系統掩碼?

mask chart

常見的來源是物理上c:\source

實例A會解釋身在c:\instanceA但最初都沒有,但符號連接一切c:\source

實例B將在物理上c:\instanceB但最初都沒有,但符號連接一切c:\source

當您對實例A和實例B進行更改時,如果從實例文件夾中刪除文件並在實例目錄中創建新物理文件(如果現有通用文件源文件已被修改。 新文件將存在於實例文件夾中,但永遠不會返回到Common Source。

這種類型的設置對於一個項目非常有用,我想對不同的線程在不同實例上工作的多個實例進行多種不同類型的小調整。

我知道符號鏈接,但在修改文件的情況下它們不足。

有什麼可以做到這一點?如果不是,我是否應該嘗試做出這個專利呢?對我來說似乎是個好主意。

我將在Windows Server 2008或更高版本上。

+0

要回答你的最後一個問題,關於專利:* no *。 – 2012-07-20 16:38:57

+0

真正的問題是:你對數據大小有問題,或者你對這些「實例」的管理有問題嗎?一個有用的答案應該解決這些問題。 – 2012-07-20 16:46:24

回答

8

害怕我說明了,但git是一個可以用來實現這種行爲的工具。

  1. 讓你的 「共同起源」 一個Git倉庫
  2. 克隆庫兩次 「InstanceA」 和 「InstanceB」
  3. 在每個實例中,檢查出一個新的,獨特的分支

由於在「公共源」中進行了更改,因此您可以將這些更改合併到「InstanceA」和「InstanceB」中,同時保留您爲每個創建的「MASK」(更改分支)

這允許從「公共資源」的轉變是如你所願有變化,而不是額外的好處,以「共同起源」 到每個實例(東西我想是不太理想更容易出錯)

+0

好點,但是當我克隆repo時,我是不是在文件系統上創建文件的實際物理副本? – Matt 2012-07-11 17:56:18

+0

是的,'InstanceA'和'InstanceB'以'Common Source'的相同副本開始 - 「link」是git存儲庫,能夠在每個實例中管理來自'Common Source'的偏移,同時仍允許來自'Common Source '出現在每個實例中*(當使用git合併時)*。 – deefour 2012-07-11 18:00:46

+0

你也可以通過Subversion來實現,並且可以說沒有多少麻煩。我唯一要添加的是,要實現所需的行爲,您需要將存儲庫簽出到兩個位置InstanceA和InstanceB,然後從不更新它們或提交它們。如果您執行了更新,那麼該文件夾將從Common中獲取所有更改,同時保留它自己的更改,並且如果您執行了Commit,則會推回它的更改並將其合併到Common中的文件中。 – 2012-07-18 09:56:40

1

從Windows 7開始,您可以使用libraries,這將允許您包含來自多個物理位置的文件。 (例如,在Program Files文件夾中創建或修改文件時,它實際上將在用戶特定的文件夾中創建: C:\ Users \ user \ AppData \ Local \ VirtualStore。但是 - 我不知道如何自己創建這種類型的文件夾,並且據我所知,您可以添加和修改文件,但不能以這種方式刪除文件。

+0

我被撕裂誰獎勵賞金 - 如果我能分解它,你會得到它的三分之一,我不能,所以我去社區投票的地方。雖然 – Matt 2012-07-20 17:43:15

+0

感謝@Matt。社區是正確的,使用源代碼控制有很多好處,但這不是你要求的。一個真正好的解決方案應該是這兩種想法的組合 - 一個源代碼控制客戶端,它意識到本地副本有很多共同點,並且在管理你所描述的方式上的相似點和差異方面很聰明。 – 2012-07-21 10:35:05

1

你會想要一個支持每個文件簽出和權限的版本控制系統。然後你只需要設置一個簡單的API轉換器,它接受文件系統命令並將它們轉換爲版本控制命令。

刪除 - >禁止訪問文件的權限。

目錄命令應查找本地副本以及您有權訪問的內容。

打開 - >抓取本地副本,從存儲庫的失敗檢出文件。

保存 - >禁用權限,保存本地副本。 //避免重複出現。

關閉但不保存 - >如果從存儲庫訪問權限,刪除本地副本。

((順便說一句,這存儲優化似乎是有些版本虛假。磁盤空間也相對便宜。

如果你的興趣不在版本,我會建議尋找到分離出的信息,你會可能需要爲每個分支創建配置文件,當然,這需要一個可預測的模式來修改))

1

IBM Rational ClearCase是版本控制系統,它執行類似文件掩碼的行爲。它被稱爲MVFS:MultiVersion文件系統,可以像普通的網絡驅動器一樣安裝到工作站上。

ClearCase服務器(又名.VOB)可以存儲同一文件的多個版本,每個版本都在不同的代碼分支上。用戶可見的文件集稱爲視圖。每個視圖都有一個配置(aka。配置規範),該配置定義了當前用戶可見的文件和版本。典型的文件如下所示:

# From wikipedia: http://en.wikipedia.org/wiki/IBM_Rational_ClearCase#Configuration_specifications 
# Show all elements that are checked out to this view, regardless any other rules. 
element * CHECKEDOUT 

# For all files named 'somefile', regardless of location, always show the latest version 
# on the main branch. 
element .../somefile /main/LATEST 

# Use a specific version of a specific file. Note: This rule must appear before 
# the next rule to have any effect! 
element /vobs/project1/module1/a_header.h /main/proj_dev_branch/my_dev_branch1/14 

# For other files in the 'project1/module1' directory, show versions 
# labeled 'PROJ1_MOD2_LABEL_1'. Furthermore, don't allow any checkouts in this path. 
element /vobs/project1/module1/... PROJ1_MOD2_LABEL_1 -nocheckout 

# Show the 'ANOTHER_LABEL' version of all elements under the 'project1/module2' path. 
# If an element is checked out, then branch that element from the currently 
# visible version, and add it to the 'module2_dev_branch' branch. 
element /vobs/project1/module2/... ANOTHER_LABEL -mkbranch module2_dev_branch 
+0

我被撕裂誰獎勵賞金 - 如果我可以分割它,你會得到它的三分之一,我不能,所以我去社會投票的地方。謝謝 – Matt 2012-07-20 17:43:06

+0

沒問題:)很高興幫助。 – 2012-07-20 20:03:00

2

您正在尋找一個union mount。不幸的是,我不知道Windows的任何實現,但有幾種可用於Linux,特別是UnionFS

通常它們用於使只讀文件系統看起來像讀寫:通常在live-CD上。

+0

我被撕裂是爲了獎賞賞金 - 如果我可以分割它,你會得到它的三分之一,我不能這樣,所以我去社區投票的地方。不過謝謝 – Matt 2012-07-20 17:42:41

相關問題