0

私はSVNKitのドキュメントのドキュメントから書いた/適応させたメソッドを取得しようとしていますが、役に立ちません。特定のリビジョンと一致する場合、ファイルの内容を印刷しようとしています。問題は、getfile 呼び出しを適切に使用する方法がわからないことです。渡す必要がある文字列がわかりません。どんな助けでも大歓迎です!!

 public static void listEntries(SVNRepository repository, String path, int revision, List<S_File> file_list) throws SVNException {
      Collection entries = repository.getDir(path, revision, null, (Collection) null);
      Iterator iterator = entries.iterator();
      while (iterator.hasNext()) {
           SVNDirEntry entry = (SVNDirEntry) iterator.next();

           if (entry.getRevision() == revision) {
                SVNProperties fileProperties = new SVNProperties();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                S_File toadd = new S_File(entry.getDate(), entry.getName(), entry.getRevision());                


                try {                        
                    SVNNodeKind nodeKind = repository.checkPath(path + entry.getName(), revision); //**PROBLEM HERE**

                    if (nodeKind == SVNNodeKind.NONE) {
                        System.err.println("There is no entry there");
                        //System.exit(1);
                    } else if (nodeKind == SVNNodeKind.DIR) {
                        System.err.println("The entry is a directory while a file was expected.");
                        //System.exit(1);
                    }                        
                    repository.getFile(path + entry.getName( ), revision, fileProperties, baos);


                } catch (SVNException svne) {
                    System.err.println("error while fetching the file contents and properties: " + svne.getMessage());
                    //System.exit(1);
                }
4

1 に答える 1

1

この問題は、以前のリビジョンのパスが異なることに関連している可能性があります。たとえば、/Repo/components/new/file1.txt [rev 1002] が /Repo/components/old/file1.txt [rev 1001] から移動された可能性があります。 . パス /Repo/components/new/ でリビジョン 1001 の file1.txt を取得しようとすると、SVNException がスローされます。

SVNRepository クラスには、コレクションを返すgetFileRevisionsメソッドがあり、各エントリには特定のリビジョン番号のパスがあるため、このパスを getFile メソッドに渡すことができます。

String inintPath = "new/file1.txt";
Collection revisions = repo.getFileRevisions(initPath, 
                       null, 0, repo.getLatestRevision());
Iterator iter = revisions.iterator();
while(iter.hasNext())
{
SVNFileRevision rv = (SVNFileRevision) iter.next();

InputStream rtnStream = new ByteArrayInputStream("".getBytes());
    SVNProperties fileProperties = new SVNProperties();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    repo.getFile(rv.getPath(), rv.getRevision(), fileProperties, baos); 
}
于 2012-08-31T15:59:42.923 に答える