Использование p4 api .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), которые я получаю из репозитория, который работает нормально. Затем я пытаюсь синхронизировать эти файлы с клиентом. Затем я создаю список изменений, но я не знаю, как приступить к редактированию файлов и отправке изменений. Мне известны методы Client.EditFiles и Changelist.Submit, но я не уверен, как использовать их в этой ситуации, так как не до конца понимаю связь между клиентом / рабочим пространством и списком изменений. Короче говоря, я хотел бы иметь возможность доступа, редактирования и отправки файлов. Одна из основных проблем заключается в том, что в моем списке изменений нет файлов, и я предсказываю, что знание того, как добавлять файлы, является первым шагом. Любая помощь или пример кода с благодарностью!

2 ответа

Я знаю, что этому вопросу уже 2 года, но документация на p4api.net все еще оставляет желать лучшего, поэтому любой ответ может помочь будущим пользователям. Я считаю, что ваша остающаяся проблема заключается в том, что вы используете версионный файл спецификации. Ваша проблема должна быть решена следующей строкой:

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

У меня нет большого опыта работы с P4API.NET, но я думаю, что вам нужно сделать, это вызвать Client.EditFiles и использовать параметр options, чтобы указать список изменений. Не уверен, будете ли вы использовать ссылку на объект списка изменений или просто номер списка изменений.

Другие вопросы по тегам