57 Stimmen

Subversion ignoriert die Optionen "--password" und "--username"

Wenn ich versuche, einen beliebigen svn-Befehl auszuführen und die --username et/ou --password Optionen, werde ich trotzdem nach meinem Passwort gefragt, und es wird immer versucht, meinen aktuellen Benutzer zu verwenden, anstatt den, der in --username . Weder --no-auth-cache noch --non-interactive irgendeine Auswirkung auf dies haben. Dies ist ein Problem, weil ich versuche, svn-Befehle von einem Skript aus aufzurufen, und ich kann nicht haben, dass es die Eingabeaufforderung zeigt.

Zum Beispiel, wenn Sie als Benutzer1 angemeldet sind:

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

Andere Optionen funktionieren korrekt:

# $ svn --version --quiet
# 1.3.2

Warum fordert sie mich auf?
Und warum wird nach dem Passwort von Benutzer 1 gefragt und nicht nach dem von Benutzer 2?
Ich bin mir zu 99 % sicher, dass alle meine Berechtigungen korrekt eingestellt sind. Gibt es eine Konfigurationsoption für svn, die Kommandozeilenpasswörter ausschaltet?
Oder ist es etwas ganz anderes?

Ich verwende svn 1.3.2 (r19776) auf Fedora Core 5 (Bordeaux).


Hier ist eine Liste meiner Umgebungsvariablen (die sensiblen Informationen sind durchgestrichen). Keine davon scheint auf SVN zuzutreffen:

# 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

0 Stimmen

Ich kenne mich mit *nix-Shells nicht aus - aber verwenden Sie dort tatsächlich die einfachen Anführungszeichen? Müssten es nicht doppelte Anführungszeichen sein?

0 Stimmen

Gibt es vielleicht eine benutzerdefinierte Konfiguration in Ihrem $HOME/.subversion?

55voto

crashmstr Punkte 27437

Haben Sie tatsächlich die einfachen Anführungszeichen in Ihrem Befehl? Ich glaube nicht, dass sie notwendig sind. Außerdem brauchen Sie meiner Meinung nach auch --no-auth-cache y --non-interactive

Ich verwende Folgendes (keine einfachen Anführungszeichen)

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

Siehe die Zwischenspeicherung von Client-Anmeldeinformationen Dokumentation im svnbook für weitere Informationen.

33voto

Thomas Vander Stichele Punkte 34981

Die Eingabeaufforderung, die Sie erhalten, sieht nicht so aus, als würde Subversion Sie nach einem Passwort fragen, sondern als würde ssh nach einem Passwort fragen. Ich vermute daher, dass Sie einen svn+ssh:// Checkout ausgecheckt haben, nicht einen svn:// oder http:// oder https:// Checkout.

IIRC alle Optionen, die Sie versuchen, funktionieren nur für die svn/http/https Checkouts. Können Sie svn info ausführen, um zu bestätigen, welche Art von Repository Sie verwenden?

Wenn Sie ssh verwenden, sollten Sie eine schlüsselbasierte Authentifizierung einrichten, damit Ihre Skripte funktionieren, ohne dass Sie nach einem Passwort gefragt werden.

17voto

tjstankus Punkte 991

Ich hatte das gleiche Problem und löste es, indem ich meine ~/.ssh/config-Datei so einrichtete, dass sie explizit den richtigen Benutzernamen verwendet (d.h. den, mit dem man sich am Server anmeldet, nicht den lokalen Rechner). Also, zum Beispiel

Host server.hostname
  User username

Ich fand diesen Blogbeitrag hilfreich: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html

2 Stimmen

Jep - der gepostete Link ist eine super-einfache Lösung für dieses Problem. Danke!

0voto

Tom Mayfield Punkte 6195

Das Beste, was ich Ihnen geben kann, ist ein "funktioniert bei mir" auf SVN 1.5. Sie können versuchen, Folgendes hinzuzufügen --no-auth-cache zu Ihrem svn update um zu sehen, ob man damit leichter überschreiben kann.

Wenn Sie dauerhaft von Benutzer2 zu Benutzer1 wechseln wollen, gehen Sie auf *nix in ~/.subversion/auth/ und löschen Sie die auth-Cache-Datei für domain.com (höchstwahrscheinlich in ~/.subversion/auth/svn.simple/ -- lesen Sie sie einfach durch und Sie werden die Datei finden, die Sie löschen wollen). Es ist zwar möglich, den aktuellen Auth-Cache zu aktualisieren, aber Sie müssen sicherstellen, dass Sie auch die Längen-Token aktualisieren. Einfacher ist es, wenn Sie bei der nächsten Aktualisierung erneut gefragt werden.

0voto

Matt Kantor Punkte 1684

Das Problem war, dass die Arbeitskopie über svn+ssh ausgecheckt wurde (danke, Thomas). Anstatt ssh-Schlüssel einzurichten, wie es vorgeschlagen wurde, habe ich einfach eine neue Arbeitskopie mit svn://domain.com/path/to/repo ausgecheckt, anstatt svn+ssh://domain.com/path/to/repo. Da sich diese Arbeitskopie auf demselben Rechner wie das Repository selbst befindet, verpasse ich nicht wirklich etwas, und ich kann jetzt die Optionen --password und --username unentgeltlich verwenden. Scheint offensichtlich zu sein, jetzt wo ich darüber nachdenke.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X