Perforce 从p4v检测工作区开关

Perforce 从p4v检测工作区开关,perforce,Perforce,如果我在P4V中打开了一个工作区,并且我切换了工作区,有没有办法通知或检测到切换已在外部发生 工作区包含一个编辑器,需要签出文件来修改它们。我担心通过P4V进行切换会使编辑器不知道文件现在来自不同的流 如果可能的话,我宁愿在编辑器中检测到这一点,也不必从P4V发出通知 谢谢, Alex如果用户正在使用一个新的工作区,他们也将使用一组不同的文件,因此希望不会有太多的混淆。(除非他们用同一根创建了多个工作区,在这种情况下,他们会尽最大努力去除自己的膝盖骨。) 如果他们在当前工作区内切换了流,您可以使

如果我在P4V中打开了一个工作区,并且我切换了工作区,有没有办法通知或检测到切换已在外部发生

工作区包含一个编辑器,需要签出文件来修改它们。我担心通过P4V进行切换会使编辑器不知道文件现在来自不同的流

如果可能的话,我宁愿在编辑器中检测到这一点,也不必从P4V发出通知

谢谢,
Alex

如果用户正在使用一个新的工作区,他们也将使用一组不同的文件,因此希望不会有太多的混淆。(除非他们用同一根创建了多个工作区,在这种情况下,他们会尽最大努力去除自己的膝盖骨。)


如果他们在当前工作区内切换了流,您可以使用诸如“p4 info”、“p4 client-o”或“p4 stream-o”之类的命令检测到这一点。

您是说您的编辑器会自动签出文件吗?这很常见,所以你不是一个人。请问是哪位编辑

你知道你的编辑是怎么跟Perforce说话的吗?我是否认为它发出
p4.exe
(cmdline工具)命令,例如
p4 edit
?(另一种方法是使用P4 API之一,例如p4java或p4python。)如果是,则
P4 edit
命令已经不符合P4V工作区设置。
p4.exe
cmdline工具将使用中指定的p4工作区。要始终使用正确的客户端

  • 在每个工作区的根目录中有一个
    P4CONFIG
    文件,指定
    P4CLIENT=[client name]
  • 更改编辑器的p4集成,使
    p4 edit
    命令始终在给定工作区内有效运行(在CWD的意义上);您可以使用
    -d
    开关进行此操作,例如,当签出
    C:\workspaces\wksp1\foo\bar\baz.C
    时,您可以调用
    p4-d C:\workspaces\wksp1\foo\bar edit C:\workspaces\wksp1\foo\bar\baz.C

谢谢您的回复。这实际上是针对Unity的,但我想从更一般的角度来看,Unity中的P4支持(来自内置功能和P4 Connect)非常糟糕,所以我宁愿绕过它们。关于P4CONFIG,您是说要将其保留在源代码管理中吗?这难道不意味着它只对一个人有效吗?如果不是,并且它不受源代码控制,我假设每个用户都需要手动创建该文件。在P4V中执行开关时,文件是否得到更新?非常感谢。通常,您不会将P4CONFIG保存在源代码管理中。它在概念上取代了环境变量或注册表设置等没有版本控制的东西。是的,每个用户都应该设置自己的P4CONFIG(但他们不必…这取决于他们的工作方式-对于某些环境变量,这可能是正确的做法)。诀窍是在每个工作区/客户机的根目录中有一个P4CONFIG,每个都相应地设置P4CLIENT。请稍候-您正在询问“何时在P4V中执行开关”-不,上面的“六种方式”都不会影响可视化客户机P4V。在P4V中,您可以设置以下内容:(1)启动P4V时,会出现一个对话框,询问您要使用哪个客户端;(2)切换客户端时。“六种方式”适用于
p4.exe
(cmdline客户端)。你在用P4V吗?或者你正在为一个“糟糕”的Unity-P4插件而挣扎?或者您正在编写自己的自动化程序?这主要是针对有人希望从main切换到他们的开发流或在发布流中进行修复的情况。我发现,像p4 info这样的命令不会拾取当前工作区,除非您在命令行上手动设置客户端规范,这将使检测开关的点无效。只要您已经知道工作区,就可以从
p4 info
获取当前流,但是如果你不知道工作区,你就不走运了。理想情况下,您可以在每个工作区根目录中设置
P4CONFIG
文件(这对于CLI用户来说是非常标准的做法,因为它使一切都变得简单)。如果您正在编写一个在P4V之外执行的工具,但它希望尝试了解如何设置工作区,则可以查询服务器上绑定到当前主机的工作区,然后检查它们的根,以查看您所在的工作区。