Perforce .net API同步库文件

时间:2014-07-19 10:11:17

标签: c# perforce p4.net

由于我很难理解P4 API文档,因此我需要帮助。我在软件仓库中有一个文件夹,比如//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我应该得到要同步的文件列表(同步预览,我将同步后台工作程序中的每个文件),但是它返回了我所有的库文件(//中的文件)根)

有人可以帮忙吗? 此致

1 个答案:

答案 0 :(得分:0)

当你这样做时:

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

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

服务器运行时:

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

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

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

p4 client -o myWrkSpace

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

我打赌你会看到它是:

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

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

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

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

p4 sync -n @123

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

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