自動スクリプト内からsvn
にhttpsのユーザー名とパスワードを〜/ .Subversionに保存させようとしています。コマンドラインで資格情報を渡すことはできますが、パスワードを暗号化せずに保存するかどうかを尋ねるプロンプトを表示したくありません。残念ながら、これは〜/ .Subversion /を作成しません:
svn --non-interactive --trust-server-cert --username myusername --password secret co https://private.example.com/src/repo/
参考までに、パスワードで保護されたsvnリポジトリを参照するbower install
を使用してbower.json
を呼び出すDockerfileに対してこれを実行しようとしています。残念ながら、コマンドラインまたは環境を介してsvn資格情報をbower
に渡す方法はありません。
私は現在、svnをインタラクティブに実行して〜/ .Subversionを作成し、そのディレクトリ全体を圧縮してDockerfileにADD
ingすることで、この問題を回避しています。 〜/ .Subversionのファイル形式を見て、スクリプトで作成できると思いますが、svnにやらせたいと思います。
--username
と--password
なしで--non-interactive
と--trust-server-cert
を使用すると、認証情報が保存されます。
証明書の承認を求めるプロンプトを回避するために、--non-interactive
および--trust-server-cert
を使用していると想定しています。これらのパラメーターなしでこのプロンプトを回避するために、~/.Subversion/auth/svn.ssl.server
で受け入れられた証明書ごとに生成されるファイルのコピーをスクリプトに作成させることができます。このファイルは、各サーバーのすべてのユーザーに対して同じになります。現在、このソリューションをスクリプトに使用しています。
どうやら--non-interactive
はユーザー名を保存しますが、パスワードは保存しません。 ~/.Subversion/servers
でパスワードの保存をすでに有効にしています:
store-passwords = yes
store-plaintext-passwords = yes
store-auth-creds = yes
svn help
を見ると、関連すると思われるコマンドやオプションはありません。不可能だと思います。 SVN開発者に確実にバグレポートを提出するよう依頼してください。
auth
の下のファイル形式は、自分でスクリプト化したいものではありません。最も重要なのは、認証レコードのファイル名がハッシュのように見えることです。これはスクリプトに適した方法ではありません。ハードコードされたパスワードリスト用の特別なファイル形式、またはコマンドラインからこれを制御する方法が必要です。
これが~/.Subversion/auth/svn.simple/
の下にあるものです。
ファイル名935...dc9e
(32文字)。
コンテンツ:
K 8
passtype
V 6
simple
K 8
password
V 8
p@$$w0rd
K 15
svn:realmstring
V 48
<https://svn.someplace.com:443> VisualSVN Server
K 8
username
V 5
johny
私はこれに孤立した環境(セキュリティは問題にならなかった)でこれに立ち向かい、(linux)yes
コマンドを使用して適切な資格情報でリポジトリでsvn ls
を実行するだけで解決しました、ただし、機能させるには~/.Subversion
ディレクトリを削除する必要があることがわかりました。具体的には:
rm -fr ~/.Subversion yes yes | svn --username=user --password=guest ls svn://server/repo &>/dev/null
その後、次のすべてのsvnコマンドは、このサーバーでこれらの資格情報を使用します。もちろん、yes yes
を--password
オプションを持つ任意のsvnコマンドにパイプすることもできます。
楽しい!