2012-06-11 55 views
3

我有填充在一個Perforce庫包含在選定的目錄中的文件的細節組合框的程序。過濾P4 .net文件列表

相關的代碼是這樣的:

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方法返回的列表中刪除的文件?我無法在P4_dotNet API文檔中找到任何可能的嫌疑人。

+0

您是否嘗試檢查'File'對象的'LocalPath'或'ClientPath'屬性以查看文件是否被刪除? –

回答

1

使用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);
0

我最終得到了工作就是要做到這一點inisde 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)); 
} 

基本檢查元數據爲每個文件添加到組合框之前。

0
IList<FileSpec> filesToFind = new List<FileSpec>(); 
FileSpec fileToFind = new FileSpec(FileSpec.DepotSpec("//depot/...").DepotPath, Revision.Head); 
filesToFind.Add(fileToFind); 
Options o = new Options(); 

o.Add("-m", "changelistid"); 
IList<File> FilesFound = rep.GetFiles(filesToFind, o) 
+0

**它也可以** – gasroot