Lorsque j’essaie de faire une commande svn et que --username
les --username
et / ou --password
, il me demande --password
mon mot de passe et essaiera toujours d’utiliser mon utilisateur actuel au lieu de celui spécifié par --username
. Ni --no-auth-cache
ni --non-interactive
n’ont d’effet sur ceci. C’est un problème car j’essaie d’appeler les commandes svn à partir d’un script et je ne peux pas afficher l’invite.
Par exemple, connecté en tant qu’utilisateur1:
# $ svn update --username 'user2' --password 'password' # [email protected]'s password:
Les autres options fonctionnent correctement:
# $ svn --version --quiet # 1.3.2
Pourquoi ça m’invite?
Et pourquoi demande-t-il le mot de passe de user1 plutôt que celui de user2?
Je suis sûr à 99% que toutes mes permissions sont définies correctement. Existe-t-il une option de configuration pour svn qui désactive les mots de passe de ligne de commande?
Ou est-ce autre chose?
J’utilise svn 1.3.2 (r19776) sur Fedora Core 5 (Bordeaux).
Voici une liste de mes variables d’environnement (avec les informations sensibles X’ed out). Aucun d’entre eux ne semble s’appliquer à 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
L’invite que vous obtenez ne ressemble pas à Subversion vous demandant un mot de passe, il semble que ssh demande un mot de passe. Donc, je suppose que vous avez extrait une commande svn + ssh: //, pas une commande svn: // ou http: // ou https: //.
IIRC toutes les options que vous essayez seulement fonctionnent pour les sorties svn / http / https. Pouvez-vous lancer svn info pour confirmer le type de référentiel que vous utilisez?
Si vous utilisez ssh, vous devez configurer une authentification par clé afin que vos scripts fonctionnent sans demander de mot de passe.
Avez-vous réellement les guillemets simples dans votre commande? Je ne pense pas qu’ils sont nécessaires. De plus, je pense que vous avez également besoin de --no-auth-cache
et --non-interactive
Voici ce que j’utilise (pas de guillemets simples)
--non-interactive --no-auth-cache --username XXXX --password YYYY
Reportez-vous à la documentation sur la mise en cache des informations d’identification du client dans svnbook pour plus d’informations.
J’ai eu ce même problème et l’ai résolu en configurant mon fichier ~ / .ssh / config pour utiliser explicitement le nom d’utilisateur correct (c’est-à-dire celui que vous utilisez pour vous connecter au serveur, pas votre ordinateur local). Donc, par exemple:
Host server.hostname Nom d'utilisateur
J’ai trouvé cet article de blog utile: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html
Le mieux que je puisse vous donner est un “travaille pour moi” sur SVN 1.5. Vous pouvez essayer d’append --no-auth-cache
à votre svn update
pour voir si cela vous permet de remplacer plus facilement.
Si vous voulez passer définitivement de user2 à user1, allez dans ~ / .subversion / auth / on * nix et supprimez le fichier de cache d’authentification pour domain.com (probablement dans ~ / .subversion / auth / svn.simple / – lisez-les et vous trouverez celle que vous voulez déposer. Bien qu’il soit possible de mettre à jour le cache d’authentification actuel, vous devez également vous assurer de mettre à jour les jetons de longueur. Plus simple juste pour être invité à nouveau la prochaine fois que vous mettez à jour.
Le problème était que la copie de travail était extraite via svn + ssh (merci Thomas). Au lieu de configurer les clés ssh comme suggéré, je viens d’extraire une nouvelle copie de travail en utilisant svn: //domain.com/path/to/repo plutôt que svn + ssh: //domain.com/path/to/repo. Comme cette copie de travail se trouve sur le même ordinateur que le référentiel, je ne rate rien et je peux maintenant utiliser gratuitement les options –password et –username. Cela me semble évident maintenant que j’y pense.
Regardez dans votre répertoire svn local et regardez dans le répertoire .svn. il y a un fichier: les entrées les regardent et vous verrez que les lignes commencent par: svn + ssh: //
c’est votre première configuration faite par svn checkout ‘repo_source’ ou svn co ‘repo_source’
Si vous voulez changer cela, le meilleur moyen est de rafraîchir complètement ce référentiel. mettre à jour / valider ce que vous devriez pour sauvegarder le travail. puis enlevez complètement le répertoire et la dernière étape est créer ceci par svn co / checkout ‘URI-for-main-repo’ [répertoire optionnel local pour le magasin]
Vous devez sélectionner la méthode de connexion pour déposer le fichier: // svn + ssh: // http: // https: // ou autre décrit dans la documentation.
Après cela, vous utilisez svn update / commit comme d’habitude.
ce sujet semble hors sujet. mieux vous allez aux pages de superutilisateur.
J’ai eu un problème similaire, je voulais utiliser un nom d’utilisateur différent pour un repository svn + ssh. Au final, j’ai utilisé svn relocate
(comme décrit dans cette réponse . Dans mon cas, j’utilise svn 1.6.11 et j’ai fait ce qui suit:
svn switch --relocate \ svn+ssh://olduser@svnserver/path/to/repo \ svn+ssh://newuser@svnserver/path/to/repo
où svn+ssh://olduser@svnserver/path/to/repo
peut être trouvé dans l’ URL:
ligne sortie de la commande svn info
. Cette commande m’a demandé le mot de passe de newuser
.
Notez que cette modification est persistante, c’est-à-dire que si vous souhaitez uniquement basculer temporairement vers le nouveau nom d’utilisateur avec cette méthode, vous devrez à nouveau émettre une commande similaire après svn update
etc.