誰かが私の質問に答えてくれることを願っています。
Subversion をセットアップし、Apache2+SSL でサービスを提供し、Web 開発を行っています。
テスト サーバーで svn update を実行するポストコミット フックが必要なので、誰かがコミットすると、テスト サイトが自動的に更新されます。証明書は自己生成されたものであり、信頼されていないため、フックは機能しません。
永久に受け入れようとしましたが、受け入れられません。
何か案は?
root が $HOME の .subversion フォルダーを所有していたので、それを削除して 'svn up' を再度実行しました。今はすべてが順調です。
Linuxの場合:
ここで、$ HOME / .subversion / auth / svn.ssl.server内のファイルを-rw-r--r--に変更することで、問題を修正しました。どうやら、サーバーが新しい証明書またはアップグレードされた証明書を取得した場合、サーバーは新しいファイルを書き込みますが、それ自体の書き込み権限は追加しません。-r--r--r--権限を使用すると、svnプログラムは機能しますが、「永久に受け入れる」フラグをファイルに書き込むことはできません。.:)
テスト サーバーが実行しているプラットフォームはわかりませんでしたが、Windows ボックスの場合は、テスト サーバーの証明書ストアに証明書を追加する必要があります。次の Technet 記事が役立つ場合があります。
フックによって呼び出されたときに証明書を受け入れたユーザーとは異なるユーザーとして Subversion が実行されている可能性があります。ユーザーの特定を試み (たとえば、post-commit フック スクリプトに "echo $USER > /tmp/svn-hook-user" を入力)、sudo を使用してそのユーザーとして証明書を受け入れます。
または、自己署名証明書が受け入れられるように構成をセットアップする方法については、Subversion ブックを参照してください: SSL 証明書の管理。
テスト サイトが同じサーバー上にある場合は、file:///を使用してリポジトリをチェックアウトし、証明書チェックを回避します。
svn co file:///path_to/your/repo
Apache を使用した Window Server でこれを設定する際に同じ問題が発生しました。コミット後のフックは失敗します。SVN スタンドアロンについてはよくわかりませんが、Windows サービスとして実行される VisualSVN サーバーを使用しています。このサービスのデフォルトのユーザー アカウントは Network Service でした。そのため、アカウントを自分の管理者アカウントに変更するだけで、すべてが機能しました。
スクリプトでsudoなどを使用していますか?Sudo は通常、環境変数を消去するため、HOME は存在しません。Subversion が永続的に受け入れられた証明書に関する情報を保存できる、書き込み可能なホーム ディレクトリが必要です。したがって、スクリプトの最初に HOME 変数を自分で設定すると、機能するはずです。