使用 p4api 获取 Perforce 命令 运行 的输出

Get output of Perforce command run using p4api

我正在使用 Perforce,a.k.a。 Helix Core,C++ API 以编程方式 运行 Perforce 命令。到目前为止,我找到的所有示例都很简短,展示了如何与服务器建立连接和 运行 命令。但是……然后呢?如何访问该命令的输出?

一个简单的例子:

#include <p4/clientapi.h>

// Connect to server.
ClientApi client;
client.SetProtocol( "tag", "" );
client.Init( &e );
if ( e.Test() )
{
  e.Fmt( &msg );
  fprintf( stderr, "%s\n", msg.Text() );
  return;
}

// Run the command.
ClientUser cu;
client.Run( "info", &cu );

// Access the output.
ummm... ?

(这个问题值得一个 "p4api" 标签。但是,我没有足够的声誉来创建一个新标签。)

ClientUser 对象接收输出。如果您从命令行 运行 此代码,您将看到 p4 info 输出由 OutputInfo() 方法打印。

如果您想对输出做一些不同的事情,子类 ClientUser 并实现做其他事情的输出方法。

https://www.perforce.com/manuals/v15.1/p4api/chapter.methods.html#clientuser.outputinfo

Perforce Workshop 中有很多这样的例子。 https://swarm.workshop.perforce.com/files/guest/sam_stafford/deepannotate/DAUserFilelog.cpp