1

私はsvnkitとpoiを使用して会社のドキュメントを作成していますが、ドキュメントの「作成日」の部分に踏み込むまでは、すべてうまくいっているようです。表示する必要のあるプロパティがたくさんありますが、これまでのところ、Googleで見つけることができました。SVNRepository.logを実行し、最初のSVNLogEntry.getDateを確認することで、実際に任意のファイルの作成日を取得できることを読みましたが、ほとんどのドキュメントは、リビジョンの最新データを中心に展開しています。最後のコメント、最後に変更した人などなので、すべてSVNRepository.getLatestRevisionで埋めようとしていました。したがって、他に利用できるものがない場合は、各ファイルの作成日を探し、それに対応するファイルを探すために、たくさんの作業を行う必要があります。私が求めているのは:

私がしていることを示すためのサンプルコードのビット:

ArrayList<SVNFileRevision> resultReturn new ArrayList<SVNFileRevision>();
ArrayList entries = new ArrayList<SVNDirEntry>();
repository.getDir(path, repository.getLatestRevision(), true, entries);

Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
SVNDirEntry entry = (SVNDirEntry) iterator.next();
if (entry.getKind() != SVNNodeKind.DIR) {


    ArrayList<SVNFileRevision> aux = new ArrayList<SVNFileRevision>();
    repository.getFileRevisions(path + (path.equals("") ? "" : "/") + entry.getName(), temp, 1,
                                repository.getLatestRevision());

    for (SVNFileRevision rev : aux) {

  //So we know that rev contains date author and log        
  //System.out.println(rev.getRevision());
  //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:date"));
  //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:author"));
  //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:log"));

            //we add path and name
            rev.getRevisionProperties().put("path", path);
            rev.getRevisionProperties().put("name", entry.getName());

    //insert creation date
    // ? ? ?

            resultReturn.add(rev);

    }
}
}
return resultReturn;

助けてくれてありがとう。

4

1 に答える 1

4

各ファイルとディレクトリの SVNProperty.COMMITTED_DATE は、作成日を指します。

また、SVNProperty.COMMITTED_REVISION および SVNProperty.LAST_AUTHOR を参照することもできます (いつかファイル/ディレクトリの最新の変更の作成者とリビジョンが必要な場合)。これらのプロパティはすべて、0 を超えるすべてのリビジョンで、すべてのファイルとディレクトリに対して SVN によって自動的に設定されます。

SVNProperties properties = new SVNProperties();
svnRepostory.getFile("path/to/file", -1, properties, null);
final String committedDateString = properties.getStringValue(SVNProperty.COMMITTED_DATE);
SVNDate date = SVNDate.parseDate(committedDateString);

または (さらに良いことに) SVNRepository#info 呼び出しを使用することもできます。getDate() メソッドを持つ SVNDirEntry インスタンスを返します。

于 2012-05-10T22:51:14.990 に答える