【问题标题】:How to point a perforce workspace to a project that is synchronized across two machines?如何将 perforce 工作区指向跨两台机器同步的项目?
【发布时间】:2012-02-19 18:16:07
【问题描述】:

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

【问题讨论】:

    标签: windows linux perforce workspace


    【解决方案1】:

    我可能已经找到了答案。根据perforcedocumentation

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不幸的是,我们的 perforce 版本太旧,无法支持搁置。我试过这样做一次,当我取消搁置我的更改时,它们都已损坏。
      • 现在如何同步? Linux 机器是否只是从 Windows 机器中获取所有文件?这是你可以控制的吗?
      • 搁置是一个很好的解决方案。也许你可以升级你的服务器?
      【解决方案3】:

      为了在 Perforce 中设置备用根,我做了以下操作:

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

      参考资料:

      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 的答案在这里

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-10
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 1970-01-01
        • 2020-09-16
        • 2017-12-30
        相关资源
        最近更新 更多