web-dev-qa-db-ja.com

--non-interactiveのときにSVNに資格情報を保存させる方法

自動スクリプト内から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にADDingすることで、この問題を回避しています。 〜/ .Subversionのファイル形式を見て、スクリプトで作成できると思いますが、svnにやらせたいと思います。

7
jamshid

--username--passwordなしで--non-interactive--trust-server-certを使用すると、認証情報が保存されます。

証明書の承認を求めるプロンプトを回避するために、--non-interactiveおよび--trust-server-certを使用していると想定しています。これらのパラメーターなしでこのプロンプトを回避するために、~/.Subversion/auth/svn.ssl.serverで受け入れられた証明書ごとに生成されるファイルのコピーをスクリプトに作成させることができます。このファイルは、各サーバーのすべてのユーザーに対して同じになります。現在、このソリューションをスクリプトに使用しています。

3
NeonD

どうやら--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
2
Robert Važan

私はこれに孤立した環境(セキュリティは問題にならなかった)でこれに立ち向かい、(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コマンドにパイプすることもできます。

楽しい!

1
Johann