我想知道我是否可以使用perforce将文件或目录映射到多个本地副本。
我知道P4V确实允许我这样做但是我遇到了来自客户端的非常奇怪的行为,我怀疑这不起作用。
我不打算修改任何这些文件,我需要这个,以便重新创建构建我自己的源代码树所需的相同目录结构(如果我知道我只需要修改,我不想创建一个巨大的分支几个文件,我也不想创建额外的工作区,因为从它们切换需要花费太多时间。)
答案 0 :(得分:5)
你不被允许这样做,因为它会导致坏事。您只能将库文件映射到一个本地位置,反之亦然。您可以将两个不同的软件仓库文件夹映射到同一个本地文件夹,但是您必须以一种方式执行此操作,即本地文件夹中的文件将仅转到一个软件仓库位置(好吧,它将忽略冲突的早期映射)。 / p>
分支不能“大”,因为Perforce会制作卷影副本,直到您实际进行修改。通常,您应该分支整个树。然后,您可以为每个分支(最好)创建一个工作区,或者为一个映射所有内容的工作区(仍然可行)。
答案 1 :(得分:4)
(抱歉 - 只是看到你不想切换工作区......你能澄清为什么你觉得花费太多时间吗?你可以在p4v中设置连接菜单下的“喜欢的连接”切换快照。我想热键可能会让它更快。你也可以选择让多个p4v实例打开)。
您可以简单地创建一个新工作区来为您进行映射吗?如果您不打算修改文件,似乎是最简单的方法。只需创建一个新工作区,然后在工作区映射中应用您需要的任何更改。一个例子:
//depot/src/... //my-test-workspace/src_from_depot/...
//depot/doc/... //my-test-workspace/doc_from_depot/...
这会将src和doc文件夹放在工作区根目录的src_from_depot
和doc_from_depot
文件夹中。我只是把工作区根目录放在与你正常工作不同的地方 - 然后你就可以将副本与你正常工作的地方隔离开来,目录结构已根据你的需要进行了改动。
答案 2 :(得分:2)
听起来真正的问题可能是切换工作空间所需的时间。如果这很快,那么你可以为每个分支维护单独的工作空间。
在下一个版本中,进行就地分支切换会更容易。换句话说,您可以维护一个工作区,并在工作时将其从分支切换到分支。 p4 sync
命令添加了一个新选项,仅更新工作区中实际不同的文件。因此,即使您的分支机构很大(> 500k文件,> 30GB数据),如果两个分支之间只有10个文件不同,则将工作区从一个分支移动到另一个分支只会更新这10个文件。这应该是一个很大的节省时间。
我不确定这是否有帮助,但我认为值得一提。
答案 3 :(得分:1)
我也遇到过这个问题。我有多个分支共有的文件/目录。公共文件/目录需要存在于每个分支的特定结构中以进行编译。
对我有用的解决方案是将公共文件/目录放在分支的一个位置。这保持了perforce 1:1映射要求。
然后,将符号链接公共文件/目录到每个分支以进行编译。
答案 4 :(得分:1)
Preforce现在支持它。
将单个软件仓库路径映射到工作空间中的多个位置。
要启用一对多映射功能,请在要映射到的每个其他客户位置的映射行前加上&:
查看:
//Acme/images/logo.png //bruno_ws/products/images/logo.png
&//Acme/images/logo.png //bruno_ws/documentation/images/logo.png
&//Acme/images/logo.png //bruno_ws/support/images/logo.png
同步客户端时,软件仓库文件将映射到所有三个位置。
重要 所有以&开头的映射行都是只读的,因此在上面的示例中// bruno_ws / documentation和// bruno_ws / support是只读的。