--non-interactiveのときにsvn保存資格情報を作成する方法

--non-interactiveのときにsvn保存資格情報を作成する方法

svn自動化されたスクリプトで、私のhttpsユーザー名+パスワードを〜/ .subversionに保存しようとしています。コマンドラインから資格情報を渡すことはできますが、暗号化されていないパスワードを保存するように求められません。残念ながら、これは〜/.subversion/を生成しません:

svn --non-interactive --trust-server-cert --username myusername --password secret co https://private.example.com/src/repo/

bower installちなみに、私はパスワードbower.jsonで保護されたsvnリポジトリへの参照を呼び出すDockerfileに対してこれを行いたいと思います。残念ながら、bowerコマンドラインまたは環境を介してsvn資格情報を渡す方法はありません。

私は現在svnをインタラクティブに実行して〜/ .subversionを作成し、ディレクトリ全体を圧縮してADDDockerfileに保存することでこの問題を解決しています。 ~/.subversionのファイル形式を見てスクリプトを使用して生成できますが、むしろsvnが実行するようにしておきます。

答え1

--username有効または--password無効にすると、--non-interactive資格情報が保存されます--trust-server-cert

私はあなたが証明書を受け入れるように求めるメッセージを使用して--non-interactive避けていると仮定します。--trust-server-certこれらのパラメータなしでこのメッセージを表示したくない場合は、スクリプトを~/.subversion/auth/svn.ssl.server。現在、スクリプトにこのソリューションを使用しています。

答え2

明らかに、--non-interactiveユーザー名は保存されましたが、パスワードは保存されませんでした。次の場所でパスワード保存を有効にしました~/.subversion/servers

store-passwords = yes
store-plaintext-passwords = yes
store-auth-creds = yes

見てみるとsvn help、関連するコマンドやオプションが1つもないようです。これは不可能だと思います。 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

答え3

セキュリティが問題にならない孤立した環境でこの問題が発生し、svn ls(linux)コマンドの助けを借りて、正しい資格情報を使用してリポジトリで簡単に実行して解決しましたyes~/.subversion動作します。具体的には:

rm -fr ~/.subversion yes yes | svn --username=user --password=guest ls svn://server/repo &>/dev/null

次のすべてのsvnコマンドは、このサーバーでこれらの資格情報を使用します。もちろん、これはそのオプションを使用してすべてのyes yessvn--passwordコマンドにパイプすることができます。

楽しむ!

関連情報