2

Linux サーバーに以前存在していた SVN pre-commit フックがあります。現在、Windows (Server 2003) サーバーに移行しようとしています。

このフックは Python で記述されており、Linux ではその#!/usr/bin/env python行が先頭にあるため問題なく動作しました。ただし、Windows はそのようには機能せず、フックをバッチ ファイルにする必要があります (または他の形式ですが、それでも Python ではありません)。

重要なことは、引数がスクリプトに渡され、終了コードが呼び出しプロセス (SVN サーバー) に返されることです。これにより、コミットを許可するかどうかを知ることができます。私はファイルの構文についてほとんど何も知りませんが、次の.batような方法でうまくいくと思いました。

C:\Python26\python.exe pre-commit.py %1 %2

これが Python スクリプトをラップする最も簡単な方法であると考えるのは正しいですか? スクリプトの終了コードを自動的に返しますか?

4

1 に答える 1

2

私自身の質問に答えるには、これはほとんど機能します。終了コードはERRORLEVEL変数を介して検出されますが、環境が空のため、スクリプトへのパスを完全に指定する必要があります。ありがたいことに、最初の引数にはリポジトリの場所が含まれているため、次のようになります。

C:\Python26\python.exe %1\hooks\pre-commit.py %1 %2
于 2011-02-15T04:49:25.087 に答える