Domanda

Quando provo a eseguire qualsiasi comando svn e fornisco il file --username e/o --password opzioni, mi richiede comunque la mia password e tenterà sempre di utilizzare il mio utente corrente invece di quello specificato da --username.Nessuno dei due --no-auth-cache--non-interactive avere alcun effetto su questo.Questo è un problema perché sto provando a chiamare i comandi svn da uno script e non riesco a mostrare il prompt.

Ad esempio, effettuato l'accesso come utente1:

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

Altre opzioni funzionano correttamente:

# $ svn --version --quiet
# 1.3.2

Perché mi viene richiesto?
E perché viene richiesta la password dell'utente1 anziché quella dell'utente2?
Sono sicuro al 99% che tutte le mie autorizzazioni siano impostate correttamente.Esiste qualche opzione di configurazione per svn che disattiva le password della riga di comando?
O è qualcosa di completamente diverso?

Utilizzo svn 1.3.2 (r19776) su Fedora Core 5 (Bordeaux).


Ecco un elenco delle mie variabili di ambiente (con le informazioni sensibili X'ed out).Nessuno di questi sembra applicarsi a 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
È stato utile?

Soluzione

La richiesta che ricevi non sembra che Subversion ti chieda una password, sembra che ssh chieda una password.Quindi suppongo che tu abbia eseguito un checkout svn+ssh://, non un checkout svn:// o http:// o https://.

Tutte le opzioni IIRC che stai provando funzionano solo per i checkout svn/http/https.Puoi eseguire svn info per confermare che tipo di repository stai utilizzando?

Se utilizzi ssh, dovresti impostare l'autenticazione basata su chiave in modo che i tuoi script funzionino senza richiedere una password.

Altri suggerimenti

Hai effettivamente le virgolette singole nel tuo comando?Non penso che siano necessari.Inoltre, penso che anche tu ne abbia bisogno --no-auth-cache E --non-interactive

Ecco cosa uso (senza virgolette singole)

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

Vedi il Caching delle credenziali del cliente documentazione nello svnbook per maggiori informazioni.

Ho riscontrato lo stesso problema e l'ho risolto configurando il mio file ~/.ssh/config per utilizzare esplicitamente il nome utente corretto (ad esempioquello che usi per accedere al server, non al tuo computer locale).Quindi, ad esempio:

Host server.hostname
  User username

Ho trovato utile questo post del blog: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html

Il massimo che posso darti è "funziona per me" su SVN 1.5.Puoi provare ad aggiungere --no-auth-cache alla tua svn update per vedere se questo ti consente di eseguire l'override più facilmente.

Se vuoi passare permanentemente da utente2 a utente1, vai su ~/.subversion/auth/ su *nix ed elimina il file di cache di autenticazione per domain.com (molto probabilmente in ~/.subversion/auth/svn.simple/ -- basta leggerli e troverai quello che vuoi eliminare).Sebbene sia possibile aggiornare la cache di autenticazione corrente, devi assicurarti di aggiornare anche i token di lunghezza.È più semplice ricevere nuovamente la richiesta la prossima volta che aggiorni.

Il problema era che la copia di lavoro veniva estratta tramite svn+ssh (grazie, Thomas).Invece di impostare le chiavi ssh come suggerito, ho semplicemente controllato una nuova copia funzionante utilizzando svn://domain.com/path/to/repo anziché svn+ssh://domain.com/path/to/repo.Poiché questa copia funzionante si trova sulla stessa macchina del repository stesso, non mi sto perdendo nulla e ora posso utilizzare le opzioni --password e --username gratuitamente.Sembra ovvio ora che ci penso.

Guarda il tuo repository svn locale e guarda nella directory .svn .c'è un file:le voci esaminale e vedrai che le righe iniziano con:svn+ssh://

questa è la tua prima configurazione effettuata da svn checkout 'repo_source' o svn co 'repo_source'

se vuoi cambiarlo, il modo migliore è aggiornare completamente questo repository.aggiorna/impegna ciò che dovresti per salvare il lavoro.quindi rimuovere completamente la directory e l'ultimo passaggio è crearlo da svn co/checkout 'URI-for-main-repo' [opzionalmente directory locale per store]

È necessario selezionare il metodo di connessione al repository file:// svn+ssh:// http:// https:// o altro descritto nella documentazione.

dopodiché usi svn update/commit come al solito.

questo argomento sembra fuori tema.meglio andare alle pagine del superutente.

Ho avuto un problema simile, volevo utilizzare un nome utente diverso per un repository svn+ssh.Alla fine, ho usato svn relocate (come descritto in in questa risposta.Nel mio caso, sto usando svn 1.6.11 e ho fatto quanto segue:

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

Dove svn+ssh://olduser@svnserver/path/to/repo può essere trovato in URL: uscita di linea di svn info comando.Questo comando mi ha chiesto la password di newuser.

Tieni presente che questo cambiamento è persistente, vale a direse desideri passare solo temporaneamente al nuovo nome utente con questo metodo, dovrai eseguire nuovamente un comando simile in seguito svn update eccetera.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top