2012-07-11 28 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

相关问题