Reputation: 1754
When I try to do any svn command and supply the --username
and/or --password
options, it prompts me for my password anyways, and always will attempt to use my current user instead of the one specified by --username
. Neither --no-auth-cache
nor --non-interactive
have any effect on this. This is a problem because I'm trying to call svn commands from a script, and I can't have it show the prompt.
For example, logged in as user1:
# $ svn update --username 'user2' --password 'password'
# [email protected]'s password:
Other options work correctly:
# $ svn --version --quiet
# 1.3.2
Why does it prompt me?
And why is it asking for user1's password instead of user2's?
I'm 99% sure all of my permissions are set correctly. Is there some config option for svn that switches off command-line passwords?
Or is it something else entirely?
I'm running svn 1.3.2 (r19776) on Fedora Core 5 (Bordeaux).
Here's a list of my environment variables (with sensitive information X'ed out). None of them seem to apply to 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
Upvotes: 59
Views: 189047
Reputation: 18685
I had a similar problem, I wanted to use a different user name for a svn+ssh repository. In the end, I used svn relocate
(as described in in this answer. In my case, I'm using svn 1.6.11 and did the following:
svn switch --relocate \
svn+ssh://olduser@svnserver/path/to/repo \
svn+ssh://newuser@svnserver/path/to/repo
where svn+ssh://olduser@svnserver/path/to/repo
can be found in the URL:
line output of svn info
command. This command asked me for the password of newuser
.
Note that this change is persistent, i.e. if you want only temporarily switch to the new username with this method, you'll have to issue a similar command again after svn update
etc.
Upvotes: 0
Reputation: 1136
Look to your local svn repo and look into directory .svn . there is file: entries look into them and you'll see lines begins with: svn+ssh://
this is your first configuration maked by svn checkout 'repo_source' or svn co 'repo_source'
if you want to change this, te best way is completly refresh this repository. update/commit what you should for save work. then remove completly directory and last step is create this by svn co/checkout 'URI-for-main-repo' [optionally local directory for store]
you should select connection method to repo file:// svn+ssh:// http:// https:// or other described in documentation.
after that you use svn update/commit as usual.
this topic looks like out of topic. better you go to superuser pages.
Upvotes: 0
Reputation: 1101
I had this same issue and solved it by setting up my ~/.ssh/config file to explicitly use the correct username (i.e. the one you use to login to the server, not your local machine). So, for example:
Host server.hostname User username
I found this blog post helpful: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html
Upvotes: 18
Reputation: 1754
The problem was that the working copy was checked out via svn+ssh (thanks, Thomas). Instead of setting up ssh keys as was suggested, I just checked out a new working copy using svn://domain.com/path/to/repo rather than svn+ssh://domain.com/path/to/repo. Because this working copy is on the same machine as the repository itself, I'm not really missing out on anything, and I can now use the --password and --username options gratuitously. Seems obvious now that I think about it.
Upvotes: 0
Reputation: 36549
The prompt you're getting doesn't look like Subversion asking you for a password, it looks like ssh asking for a password. So my guess is that you have checked out an svn+ssh:// checkout, not an svn:// or http:// or https:// checkout.
IIRC all the options you're trying only work for the svn/http/https checkouts. Can you run svn info to confirm what kind of repository you are using ?
If you are using ssh, you should set up key-based authentication so that your scripts will work without prompting for a password.
Upvotes: 33
Reputation: 28573
Do you actually have the single quotes in your command? I don't think they are necessary. Plus, I think you also need --no-auth-cache
and --non-interactive
Here is what I use (no single quotes)
--non-interactive --no-auth-cache --username XXXX --password YYYY
See the Client Credentials Caching documentation in the svnbook for more information.
Upvotes: 57
Reputation: 6276
Best I can give you is a "works for me" on SVN 1.5. You may try adding --no-auth-cache
to your svn update
to see if that lets you override more easily.
If you want to permanently switch from user2 to user1, head into ~/.subversion/auth/ on *nix and delete the auth cache file for domain.com (most likely in ~/.subversion/auth/svn.simple/ -- just read through them and you'll find the one you want to drop). While it is possible to update the current auth cache, you have to make sure to update the length tokens as well. Simpler just to get prompted again next time you update.
Upvotes: 0