使用p4 api .NET将文件添加到Changelist

时间:2013-06-25 23:26:10

标签: c# perforce p4api.net

我的总体目标是能够在工作区内同步,签出和签入文件。这是我感到困惑的主要部分:

IList<FileSpec> files = new List<FileSpec>();
FileSpec file = new FileSpec(testpath, null, locpath, VersionSpec.Head);
files.Add(file);
IList<FileSpec> foundFiles = rep.GetDepotFiles(files, null);

con.Client.SyncFiles(foundFiles, null);

Changelist cl = new Changelist();
cl.Description = "newest change";
cl.ClientId = ws_client;
Changelist changelist = rep.CreateChangelist(cl);

//Added the line below
con.Client.EditFiles(new Options(EditFilesCmdFlags.None, changelist.Id, null), file);

我首先创建从存储库中获取的库文件列表(foundFiles),这样可以正常工作。然后我尝试将这些文件同步到客户端。然后我创建了一个Changelist,但我不知道如何编辑文件并提交更改。我知道Client.EditFiles和Changelist.Submit方法,但我不知道如何在这种情况下使用它们,因为我不完全理解客户端/工作区和更改列表之间的链接。简而言之,我希望能够访问,编辑和提交文件。一个主要问题是我的Changelist中没有文件,我预测知道如何添加文件是第一步。非常感谢任何帮助或示例代码!

2 个答案:

答案 0 :(得分:1)

我知道问题是2年了,但是p4api.net文档仍然很差,所以任何答案都可能对未来的用户有所帮助。 我相信你剩下的问题是你使用版本化的文件规范。您的问题应该通过以下最后一行来解决:

        //Added the line below            
        con.Client.EditFiles(new P4.Options(P4.EditFilesCmdFlags.None, changelist.Id, null), P4.FileSpec.UnversionedSpecList(foundFiles).ToArray());

答案 1 :(得分:0)

我对P4API.NET没有太多经验,但我认为您需要做的是调用Client.EditFiles,并使用options参数指定更改列表。不确定您是否使用对changelist对象的引用,或仅使用更改列表编号。