【问题标题】:How do I get the perforce root directory from command line?如何从命令行获取 perforce 根目录?
【发布时间】:2014-02-16 08:59:44
【问题描述】:

如何从命令行获取 perforce 根目录?我已经尝试过p4 info,但我宁愿不必过滤它来获取根。我确定有办法,但我找不到。

有没有办法以上下文相关的方式获取根?例如,如果我有两个具有 A/.../script 与 B/.../script 之类的层次结构的工作区,我希望脚本会根据运行的位置返回 A 或 B。

【问题讨论】:

  • 这里的“perforce 根目录”到底是什么?客户端的 Root 属性(在您当前的机器上可能存在也可能不存在,因为它可能使用 AltRoot,例如,用于跨平台客户端)?
  • 我认为@ChristopherCreutzig 在这里是正确的。 p4 info 将解析为您当前的设置,而从工作区获取它则需要模拟 Perforce 处理 AltRoot 的操作...
  • 我不确定p4 info | grep 'Client root:' | cut -d ' ' -f 3- 的问题是您要避免的。但我从未检查过,例如,p4 info 是否已本地化——如果没有,将来可能会改变。
  • 那么听起来你想要'p4 where //depot/A/B/C'。
  • @BryanPendleton 请将您的评论提升为答案。我认为这个问题的很大一部分读者实际上想要这个。也可以链接到manual for p4 where

标签: perforce


【解决方案1】:

如果您希望在一个命令中运行您的客户端根:

p4 -F %clientRoot% -ztag info

您需要 2014.1 更高版本的 p4 才能使用此标志。

【讨论】:

  • 它对我有用。您可能有一些旧版本的 P4 客户端。
  • 你是正确的 Tor。我已经更新了答案以澄清。
  • 如果 'clientRoot' 已经在环境中设置,则会中断。转义第二个百分号:%clientRoot^%。但是因为 CMD 是特殊的,它只有在你自己在提示符下键入时才有效。要在批处理文件中执行此操作,您必须说 %%clientRoot^^^%%,这非常可怕。
  • 这很好用,但出于好奇,你知道 %clientRoot% 变量是如何设置的吗?我用 2 个不同的根测试了这个,它们都在 P4CONFIG.txt 文件中设置了 P4CLIENT,所以可能 clientRoot 是通过 P4CLIENT 设置的?
  • @Matt ...另外,-ztag 参数是干什么用的?
【解决方案2】:

对于 2014.1 之前的旧版本使用命令

p4 信息 | grep '客户端根目录:' |剪切 -d ' ' -f 3-

【讨论】:

    【解决方案3】:

    根据 OP 的描述,他们可能想要p4 where。例如,如果客户端根是/perforce/projects,那么

    p4 where //depot/project-1/module-2
    

    会给/perforce/projects/project-1/module-2。来自Bryan’s comment

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2011-07-29
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多