1

変更セットにある .txt ファイルを探しています。次に、このファイルのフル パス ディレクトリを自分の PC でローカルに作成する必要があります。

たとえば、「test.txt」という名前のファイルが次の場所にある場合: Project1-->Folder1-->Folder2-->test.txt

これまで、このファイルを検索することができました。ここで、ディレクトリ全体を取得し、PC 上で同様のディレクトリを作成する必要があります。 PC での結果: Folder1-->Folder2-->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 を取得するには、私の場合は無効な workspaceConnection が必要です。

ありがとう。

私は RTC:4 Win:XP を使用しています

前もって感謝します。

4

1 に答える 1

1

ファイル/フォルダーには、名前/パスに依存しない ID があります。これにより、名前変更/移動全体でファイルを追跡できます。ファイルの名前/パスは、そのファイル (または含まれるフォルダー) に加えられた変更の履歴によって異なる場合があります。

これは、関心のある履歴の特定のポイントを指すワークスペース (またはベースライン) がない場合、パスが実際に何であるかを確認できないことを意味します。IConfiguration.determineAncestorsInHistoryパスを取得する唯一の方法です。

ファイルの「一般的な」パスを推測するアルゴリズムがサーバーの奥深くに埋め込まれていますが、これはどこにも公開されていません。

于 2013-05-14T20:47:26.127 に答える