55

svn コマンドを実行して--usernameand/or--passwordオプションを指定しようとすると、とにかくパスワードの入力を求められ、常に で指定されたユーザーの代わりに現在のユーザーを使用しようとします--username--no-auth-cacheこれには何の影響もありません--non-interactive。スクリプトから svn コマンドを呼び出そうとしているため、これは問題であり、プロンプトを表示することはできません。

たとえば、user1 としてログインします。

# $ svn update --username 'user2' --password 'password'
# user1@domain.com's password: 

他のオプションは正しく機能します:

# $ svn --version --quiet
# 1.3.2

プロンプトが表示されるのはなぜですか?
また、user2 のパスワードではなく、user1 のパスワードを要求するのはなぜですか?
すべての権限が正しく設定されていることを 99% 確信しています。コマンドラインパスワードをオフにするsvnの設定オプションはありますか?
それとも、まったく別のものですか?

Fedora Core 5 (ボルドー) で svn 1.3.2 (r19776) を実行しています。


これが私の環境変数のリストです(機密情報はX'ed out)。それらのどれもSVNに適用されないようです:

# HOSTNAME=XXXXXX
# TERM=xterm
# SHELL=/bin/sh
# HISTSIZE=1000
# KDE_NO_IPV6=1
# SSH_CLIENT=XXX.XXX.XXX.XXX XXXXX XX
# QTDIR=/usr/lib/qt-3.3
# QTINC=/usr/lib/qt-3.3/include
# SSH_TTY=/dev/pts/2
# USER=XXXXXX
# LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
# KDEDIR=/usr
# MAIL=/var/spool/mail/XXXXXX
# PATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
# INPUTRC=/etc/inputrc
# PWD=/home/users/XXXXXX/my_repository
# KDE_IS_PRELINKED=1
# LANG=en_US.UTF-8
# SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
# SHLVL=1
# HOME=/home/users/XXXXXX
# LOGNAME=XXXXXX
# QTLIB=/usr/lib/qt-3.3/lib
# CVS_RSH=ssh
# SSH_CONNECTION=69.202.73.122 60998 216.7.19.47 22
# LESSOPEN=|/usr/bin/lesspipe.sh %s
# G_BROKEN_FILENAMES=1
# _=/bin/env
# OLDPWD=/home/users/XXXXXX
4

7 に答える 7

55

コマンドに実際に一重引用符がありますか?それらは必要ないと思います。--no-auth-cacheさらに、あなたも必要だと思います--non-interactive

これが私が使用するものです(一重引用符なし)

--non-interactive --no-auth-cache --username XXXX --password YYYY

詳細については、svnbookのClient Credentials Cachingドキュメントを参照してください。

于 2008-08-29T18:11:00.053 に答える
33

表示されるプロンプトは、Subversion がパスワードを要求するようには見えません。ssh がパスワードを要求するように見えます。したがって、svn://、http://、または https:// チェックアウトではなく、svn+ssh:// チェックアウトをチェックアウトしたと思います。

IIRC で試しているすべてのオプションは、svn/http/https チェックアウトでのみ機能します。svn info を実行して、使用しているリポジトリの種類を確認できますか?

ssh を使用している場合は、キーベースの認証を設定して、スクリプトがパスワードの入力を求めることなく機能するようにする必要があります。

于 2008-09-01T20:29:02.970 に答える
17

私はこれと同じ問題を抱えていましたが、~/.ssh/config ファイルを設定して正しいユーザー名 (つまり、ローカル マシンではなくサーバーへのログインに使用するユーザー名) を明示的に使用することで解決しました。たとえば、次のようになります。

ホスト server.hostname
  ユーザー名

このブログ投稿が役に立ちました: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html

于 2009-06-16T16:48:12.103 に答える
0

問題は、作業コピーがsvn + sshを介してチェックアウトされたことでした(ありがとう、Thomas)。提案されたようにsshキーを設定する代わりに、svn + ssh://domain.com/path/to/repoではなくsvn://domain.com/path/to/repoを使用して新しい作業コピーをチェックアウトしました。この作業コピーはリポジトリ自体と同じマシン上にあるため、私は実際に何かを見逃しているわけではなく、-passwordおよび--usernameオプションを無償で使用できるようになりました。私がそれについて考えると、今は明らかなようです。

于 2008-09-04T19:04:33.243 に答える
0

ローカルの svn リポジトリを調べて、ディレクトリ .svn を調べます。ファイルがあります: エントリがそれらを調べると、行が次で始まることがわかります: svn+ssh://

これは、svn checkout 'repo_source' または svn co 'repo_source' によって作成された最初の構成です

これを変更したい場合は、このリポジトリを完全に更新するのが最善の方法です。作業を保存するために必要なものを更新/コミットします。次に、ディレクトリを完全に削除し、最後のステップは、svn co/checkout 'URI-for-main-repo' [オプションでストア用のローカル ディレクトリ] によってこれを作成することです。

repo file:// svn+ssh:// http:// https:// またはドキュメントに記載されているその他への接続方法を選択する必要があります。

その後、通常どおり svn update/commit を使用します。

このトピックはトピック外のようです。スーパーユーザーのページに行くほうがいいです。

于 2013-10-31T10:56:05.117 に答える
0

同様の問題がありました。svn + sshリポジトリに別のユーザー名を使用したかったのです。最後に、私は(この回答でsvn relocate説明されているように)を使用しました。私の場合、svn 1.6.11を使用しており、次のことを行いました:

svn switch --relocate \
    svn+ssh://olduser@svnserver/path/to/repo \
    svn+ssh://newuser@svnserver/path/to/repo

コマンドの行出力で見つけることがsvn+ssh://olduser@svnserver/path/to/repoできます。このコマンドは、 のパスワードを要求しました。URL:svn infonewuser

この変更は永続的であることに注意してください。つまり、この方法で一時的に新しいユーザー名に切り替えるだけの場合は、後で同様のコマンドを再度発行する必要がありますsvn update

于 2016-04-09T16:00:14.707 に答える
0

私があなたに与えることができる最善のことは、SVN 1.5で「私にとってうまくいく」ことです。に追加--no-auth-cacheして、svn updateより簡単にオーバーライドできるかどうかを確認してください。

user2 から user1 に永続的に切り替えたい場合は、*nix で ~/.subversion/auth/ に移動し、domain.com の認証キャッシュ ファイルを削除します (おそらく ~/.subversion/auth/svn.simple/ にあります) --それらを読むだけで、ドロップしたいものを見つけることができます)。現在の認証キャッシュを更新することは可能ですが、長さトークンも更新する必要があります。次回の更新時に再度プロンプトを表示するだけで簡単です。

于 2008-08-29T17:06:46.790 に答える