Фильтровать список файлов P4 .Net

У меня есть программа, которая заполняет поле со списком сведениями о файлах, содержащихся в выбранном каталоге в хранилище perforce.

Соответствующий фрагмент кода таков:

PerforcePath dir = _ctlProductSelect.SelectedItem as PerforcePath;

_ctlServicePackSelect.Items.Clear();

if (dir != null)
{
    foreach (P4.File file in _perforce.GetFiles(null, P4.FileSpec.DepotSpec(dir.Path + "/*.sp")))
    {
       _ctlServicePackSelect.Items.Add(new PerforcePath(file.DepotPath.Path));
    }
}

Проблема в том, что сюда входят и файлы, помеченные как удаленные. Есть ли способ отфильтровать удаленные файлы из списка, возвращаемого методом GetFiles? Я не могу найти никаких вероятных подозреваемых в документации API P4_dotNet.


person Mark R    schedule 11.06.2012    source источник
comment
Пробовали ли вы проверить свойства LocalPath или ClientPath объекта File, чтобы убедиться, что файл удален?   -  person Mr. TA    schedule 11.06.2012


Ответы (2)


Используя P4API.NET, вы можете добавить опцию -e к GetFiles:


IList filesToFind = new List();
FileSpec fileToFind = new FileSpec(new DepotPath("//depot/..."), null, null, VersionSpec.Head);
filesToFind.Add(fileToFind);
Options o = new Options();
o.Add("-e", "");
IList filesFound = pRep.GetFiles(filesToFind, o);
person randy-wandisco    schedule 12.06.2012

То, что я в конечном итоге получил, заключалось в том, чтобы сделать это внутри цикла foreach:

foreach (P4.File file in _perforce.GetFiles(null, P4.FileSpec.DepotSpec(dir.Path + "/*.sp")))
{
    if (_perforce.GetFileMetaData(null, file)[0].HeadAction.ToString() != "MoveDelete")
    _ctlServicePackSelect.Items.Add(new PerforcePath(file.DepotPath.Path));
}

в основном проверяя метаданные для каждого файла, прежде чем добавлять его в поле со списком.

person Mark R    schedule 14.06.2012