【问题标题】:Perforce .net API sync depot filesPerforce .net API 同步仓库文件
【发布时间】:2014-07-19 10:11:17
【问题描述】:

由于我很难理解 P4 API 文档,因此我需要帮助。我在 depot 中有一个文件夹,例如 //root/a/...,首先我正在运行预览以了解要在更改列表上同步的文件数量,例如 123

Client.ViewMap = new ViewMap();
Client.ViewMap.Add("//root/a/...", "//" + myWrkSpace + "/a/...", MapType.Include);
Options sFlags = new Options( SyncFilesCmdFlags.Preview, 123 );
rFiles = rep.Connection.Client.SyncFiles(sFlags, null);

rFiles 中,我应该得到要同步的文件列表(同步预览,我将在后台工作人员中同步每个文件),但它返回给我所有的 depot 文件(//root 中的文件)

有人可以帮忙吗? 问候

【问题讨论】:

    标签: c# perforce p4.net


    【解决方案1】:

    当你这样做时:

    Client.ViewMap = new ViewMap();
    Client.ViewMap.Add("//root/a/...", "//" + myWrkSpace + "/a/...", MapType.Include);
    

    您只是在程序的客户端对象中本地设置一些数据,而不是在服务器上。

    服务器运行时:

    rFiles = rep.Connection.Client.SyncFiles(sFlags, null);
    

    它正在使用存储在服务器上的视图地图。

    如果您运行(从 CMD.EXE 提示符,并使用您的工作区的真实名称):

    p4 client -o myWrkSpace
    

    您将在服务器上看到您的工作区的实际视图。

    我打赌你会看到它是:

    //root/... //myWrkSpace/...
    

    这就是您在同步中获取所有 depot 文件的原因。

    因此,如果您想更改视图地图,您不仅要在本地进行设置,还必须在运行同步之前更新服务器上的工作区定义。

    有助于您调试这类事情的一件事是充分熟悉 p4 命令行工具,以便您可以从 CMD.EXE 提示符运行命令,例如:

    p4 sync -n @123
    

    这是(我认为)您尝试从 API 程序运行的命令。

    然后您可以从命令行查看该命令的工作方式,然后您可以查看服务器日志并查看您的 API 程序发出的实际命令,并将这些命令与您从命令行运行的命令进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多