Javaでプリコミットフックを書いています。pre-commit フック (バッチ ファイル) は、次のパラメーターを使用して Java プログラムを呼び出します: repositoryLocation
, transactionId
. コミット中に XML ファイルを検証する必要があり、それらのいずれかが無効であると思われる場合は、コミット前のフックにゼロ以外の終了コードを返し、コミット トランザクション全体がロールバックされます。
次の方法で、ファイルの任意のリビジョンのコンテンツ コードにアクセスできます。
SVNRepository repository = ...;
SVNProperties fileProperties = new SVNProperties();
ByteArrayOutputStream baos = new ByteArrayOutputStream( );
repository.getFile( changeEntry.getCopyFromPath() , revisionNum , fileProperties , baos );
log.debug("<![CDATA["+baos.toString()+"]]>");
しかし、アップロードされているファイルのコンテンツ (ユーザーがコミットした作業コピーのコンテンツ) にアクセスできません。SVN に何も書き込みたくありません。アップロードされたファイルのコンテンツを読み取ってから、検証を行う必要があります。コミットまたはロールバックは、Java プログラムが終了した直後に SVN によって行われます。
誰でもこの問題で私を助けることができますか?