如何将perforce工作区指向跨两台计算机同步的项目?

时间:2012-02-19 18:16:07

标签: windows linux perforce workspace

我有一个eclipse同步项目,我在我的Windows机器上完成工作,然后在linux构建服务器上同步和编译它。但是,Windows工作区连接到perforce,而linux工作区则没有。问题是当Eclipse同步这两者时,权限会在linux端搞砸,这样我就无法执行通常在构建期间执行的某些shell脚本。我有的解决方法是在执行构建之前以某种方式c​​hmod所有* .sh文件,但我宁愿让perforce知道这两个地方(这样我也可以从linux端或windows端提交)。出于性能原因,我无法在远程构建服务器上运行eclipse,因此这是我找到的唯一解决方案。此外,当我尝试为linux端设置第二个工作区时,它给了我错误说“无法破坏X”。我认为主要的问题是我在这里处理某种权限问题。

3 个答案:

答案 0 :(得分:6)

我可能找到了答案。根据perforce documentation

  
    

默认情况下,您只能在Host:字段指定的计算机上使用工作区。如果要在具有不同平台的多台计算机上使用相同的客户端工作区,请删除Host:条目并在客户端规范中设置AltRoots:字段。您最多可以指定两个备用客户端工作空间根。必须在将使用它们的所有计算机上显示这些位置,例如通过NFS或Samba挂载。     Perforce将当前工作目录与主Root进行比较:首先,然后针对两个AltRoots:如果指定。使用与当前工作目录匹配的第一个根。如果没有根匹配,则使用主根。     注意     如果在任何客户端根目录中使用Windows目录,请将Windows目录指定为主客户端Root:并在AltRoots:字段中指定其他工作空间根目录。     在以下示例中,如果用户bruno的当前工作目录位于/ usr / bruno下,则Perforce使用UNIX路径作为其客户端工作空间根目录,而不是c:\ bruno_ws。此方法允许bruno为UNIX和Windows开发使用相同的客户端工作空间规范。     客户:bruno_ws     所有者:布鲁诺     描述:             由布鲁诺创建。     Root:c:\ bruno_ws     AltRoots:             的/ usr /布鲁诺/     要找出哪个工作空间根目录有效,请发出p4 info命令并检查客户端root:字段。     如果您在不同平台的同一工作区中编辑文本文件,请确保您使用的编辑器和设置保留行结尾。有关跨平台设置中的行结尾的详细信息,请参阅Perforce系统管理员指南。

  

答案 1 :(得分:2)

您可以拥有两个工作区,每台工作一台。当您在Windows机器上完成工作后,您可以shelve进行更改,然后在Linux机器上unshelve进行更改,并在那里进行构建。

答案 2 :(得分:0)

我在Perforce中设置了备用根目录:

  1. 在Windows中创建工作区
  2. 使用“p4 set P4CLIENT = workspace_name”设置当前客户端(工作区),我使用Windows + Cygwin执行此操作
  3. 从此客户端删除“主机”(工作区)“p4客户端-o | grep -v主机:| p4客户端-i”我使用Windows + Cygwin执行此操作
  4. 在Linux中添加备用root在P4V中,不要使用〜,使用绝对路径,我没有测试环境变量
  5. 切换到P4V中的工作区
  6. 获得P4V的最新版本,并检查了“强制”选项
  7. 参考文献:

    1. http://answers.perforce.com/articles/KB/3412
    2. Override host to null in perforce client creation
    3. https://www.perforce.com/perforce/r12.1/manuals/cmdref/client.html
    4. sqenixs的回答