您可以在perforce中多次映射文件或目录吗?

时间:2011-06-27 16:25:31

标签: perforce perforce-client-spec

我想知道我是否可以使用perforce将文件或目录映射到多个本地副本。

我知道P4V确实允许我这样做但是我遇到了来自客户端的非常奇怪的行为,我怀疑这不起作用。

我不打算修改任何这些文件,我需要这个,以便重新创建构建我自己的源代码树所需的相同目录结构(如果我知道我只需要修改,我不想创建一个巨大的分支几个文件,我也不想创建额外的工作区,因为从它们切换需要花费太多时间。)

5 个答案:

答案 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_depotdoc_from_depot文件夹中。我只是把工作区根目录放在与你正常工作不同的地方 - 然后你就可以将副本与你正常工作的地方隔离开来,目录结构已根据你的需要进行了改动。

答案 2 :(得分:2)

听起来真正的问题可能是切换工作空间所需的时间。如果这很快,那么你可以为每个分支维护单独的工作空间。

在下一个版本中,进行就地分支切换会更容易。换句话说,您可以维护一个工作区,并在工作时将其从分支切换到分支。 p4 sync命令添加了一个新选项,仅更新工作区中实际不同的文件。因此,即使您的分支机构很大(> 500k文件,> 30GB数据),如果两个分支之间只有10个文件不同,则将工作区从一个分支移动到另一个分支只会更新这10个文件。这应该是一个很大的节省时间。

我不确定这是否有帮助,但我认为值得一提。

答案 3 :(得分:1)

我也遇到过这个问题。我有多个分支共有的文件/目录。公共文件/目录需要存在于每个分支的特定结构中以进行编译。

对我有用的解决方案是将公共文件/目录放在分支的一个位置。这保持了perforce 1:1映射要求。

然后,将符号链接公共文件/目录到每个分支以进行编译。

答案 4 :(得分:1)

Preforce现在支持它。

将单个软件仓库路径映射到工作空间中的多个位置。

https://www.perforce.com/perforce/doc.current/manuals/p4guide/Content/P4Guide/configuration.workspace_view.one-to-many.html?TocPath=Configure%20clients%7CConfigure%20workspace%20views%7C_____8

要启用一对多映射功能,请在要映射到的每个其他客户位置的映射行前加上&:

查看:

//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是只读的。