由于我很难理解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
我应该得到要同步的文件列表(同步预览,我将同步后台工作程序中的每个文件),但是它返回了我所有的库文件(//中的文件)根)
有人可以帮忙吗? 此致
答案 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程序发出的实际命令,并将这些命令与您运行的命令进行比较命令行。