2013-02-21 48 views
1

我正在搜索位於變更集處的.txt文件。 然後我需要通過我的電腦本地創建此文件的完整路徑目錄。在不使用工作空間的情況下獲取變更集中文件的路徑

例如,如果有一個名爲「test.txt的」,它的位於文件: PROJECT1 - > Folder1中 - >文件夾2 - > test.txt的

到目前爲止我已成功地搜索此文件。 現在我需要獲取完整的目錄,並創建了我的電腦類似的一個:在我的電腦 結果: Folder1中 - >文件夾2 - > test.txt的

這就是我所做的搜索中的文件變更和檢索:

public IFileItem getTextFileFile(IChangeSet changeSet, ITeamRepository repository) throws TeamRepositoryException{ 
    IVersionableManager vm = SCMPlatform.getWorkspaceManager(repository).versionableManager(); 
    List changes = changeSet.changes(); 
    IFileItem toReturn = null; 
    for(int i=0;i<changes.size();i++) {="" <br="">    Change change = (Change) changes.get(i); 
     IVersionableHandle after = change.afterState(); 
     if(after != null && after instanceof IFileItemHandle) { 
      IFileItem fileItem = (IFileItem) vm.fetchCompleteState(after, null); 
      if(fileItem.getName().contains(".txt")) { 
        toReturn = fileItem; 
        break; 
      } else { 
       continue; 
      } 
     } 
    } 
    if(toReturn == null){ 
     throw new TeamRepositoryException("Could not find the file"); 
    } 
    return toReturn; 
} 

我已搜查&張貼在論壇上,大部分的事情是,我發現我可以使用: configuration.determineAncestorsInHistory

但是爲了獲得爲IConfiguration,我需要爲w orkspaceConnection在我的情況下無效。

謝謝。

我使用RTC:4 運:XP提前

感謝。

回答

1

文件/文件夾具有獨立於其名稱/路徑的標識。這允許通過重命名/移動來跟蹤文件。文件的名稱/路徑可能會有所不同,具體取決於對該文件所做更改的歷史記錄(或包含的文件夾)。

這意味着如果您沒有指向您關心的歷史中特定點的工作空間(或基線),那麼您無法確定實際的路徑。 IConfiguration.determineAncestorsInHistory確實是獲得路徑的唯一途徑。

有一種算法深埋在服務器中,它猜測文件的「流行」路徑,但這不會暴露在任何地方。

相關問題