2

私は SVNKit 1.7 を使用しており、2 つの日付間のエントリの履歴ログを取得したいと考えています。私が見つけたすべてのドキュメントは、2 つのリビジョン番号の間のエントリの取得のみを示しています。

基本的に次のコマンドを実行したい

svn log -v --xml --non-interactive --no-auth-cache http://foo.com  --username myusername --password mypassword -r {""2012-10-02""}:{""2012-11-01""}

現在、ランタイムクラスを使用してJavaで呼び出すコマンドラインを介してこれを行っています。

私がこの情報を使用しているのは、月ごとの SVN アクティビティのメトリックを生成することです。

リビジョン番号を使用する必要がある場合、日付に基づいて最も近いリビジョン番号を見つける方法はありますか?

ご協力いただきありがとうございます。

4

2 に答える 2

6

ドミトリーありがとう、あなたの答えはとても役に立ちましたが、最終的には org.tmatesoft.svn.core.io.SVNRepository クラスとクラスのgetDatedRevision()メソッドを使用しました。ドキュメントを見ながら、この方法を何度もちらっと見ました。

于 2012-10-23T14:35:40.647 に答える
5
    final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
    try {
        final SVNURL url = ...;

        svnOperationFactory.setAuthenticationManager(new BasicAuthenticationManager("myusername", "mypassword"));

        final SvnLog log = svnOperationFactory.createLog();
        log.addRange(SvnRevisionRange.create(SVNRevision.create(date1), SVNRevision.create(date2)));
        log.setDiscoverChangedPaths(true);
        log.setSingleTarget(SvnTarget.fromURL(url));
        log.setReceiver(new ISvnObjectReceiver<SVNLogEntry>() {
            @Override
            public void receive(SvnTarget target, SVNLogEntry logEntry) throws SVNException {
                ...
            }
        });
        log.run();
    } finally {
        svnOperationFactory.dispose();
    }
于 2012-10-12T20:47:14.153 に答える