“ svnlookが変更されました”エンコーディング
-
03-07-2019 - |
質問
次のコマンドを実行すると:
svnlookの変更{path} -r {rev}
{path}はリポジトリパス、{rev}はリビジョン番号です。次の出力が表示されます:
U trunk / this / is / a / path / Mon fichier avec un nomアクセント、.txt
実際の出力は次のとおりです。
U trunk / this / is / a / path / Mon fichier avec un nomアクセントé .txt
"é"その他のアクセント付き文字が正しく表示されません...
svnlookで文字を適切に出力する方法はありますか?
「svn log」を使用できることはわかっています。 "-xml"適切なエンコードを取得するオプションですが、事前コミットフックにこれが必要です。svn.exeは、トランザクションではなくリビジョンからのみ情報を取得できます。
ありがとう
解決
ここでの問題は、事前コミットフックがSubversionバイナリによって実行されることです。これにより、セキュリティ上の理由から、フックスクリプトに空の環境が渡されます。空の環境では、特定のロケール設定が削除され、システムのデフォルト(通常は「C」など)に戻ります。
svnlook
から正しい出力を取得するには、実行する前に気にする環境を復元する必要があります。スクリプトがbashの場合、おそらく次のようなものです。
#!/bin/bash
export LANG="en_US.UTF-8"
export PATH="/bin:/usr/bin"
# Run svnlook here and get UTF-8 encoded output
一般的に、接尾辞が「.UTF-8」のロケールは問題ありません。あなたがフランス語を話しているように思えるなら、 'fr_FR.UTF-8'ロケールは妥当な設定でしょう。
他のヒント
これを呼び出してみてください:
export LANG="fr_FR"
svnlookを使用する前に(または開発者の言語は何でも)。シェル起動スクリプトでデフォルトの言語を設定することもできるため、毎回エクスポートする必要はありません。