Dans Subversion, puis-je être un utilisateur autre que mon nom de connexion?

253

Je voudrais savoir comment Subversionchanger le nom sous lequel mes modifications apparaissent.

Je commence tout juste à utiliser Subversion. Je l'utilise actuellement pour contrôler le code de version sur un ordinateur portable XP où je suis toujours connecté sous le nom de ma femme. J'aimerais que la DB de subversion montre les changements sous mon nom.

Plus tard, je répliquerai la base de données afin qu'elle soit accessible à toute la maison. Ma femme utilise l'ordinateur de bureau où elle est toujours connectée sous mon nom. Je vais probablement le configurer pour qu'il vérifie automatiquement les documents modifiés ... de préférence sous son nom.

Finalement, je vais probablement l'utiliser à partir d'une machine Linux sous un autre nom d'utilisateur.

Existe-t-il un moyen de modifier l'environnement utilisateur pour changer le nom d'utilisateur que Subversion vous appelle? Je m'attendrais à quelque chose comme un paramètre SVN_USERNAME='Mark'qui remplacerait, mais il obtient généralement le nom.

Mise à jour: il semble que l' --usernameindicateur auquel Michael a fait référence fonctionne pour changer le nom signalé par "svn stat", même pour le fichier local: référentiels. De plus, il est collant, vous n'avez donc pas besoin de le spécifier pour la prochaine commande. J'ai même redémarré et il utilisait toujours la "--username"valeur de mon démarrage précédent.

marchés
la source

Réponses:

280

La plupart des commandes Subversion prennent l' --usernameoption pour spécifier le nom d'utilisateur que vous souhaitez utiliser dans le référentiel. Subversion se souvient du dernier nom d'utilisateur et mot de passe du référentiel utilisés dans chaque copie de travail, ce qui signifie, entre autres, que si vous utilisez, svn checkout --username myuservous n'avez plus besoin de spécifier à nouveau le nom d'utilisateur.

Comme le dit Kamil Kisiel , lorsque Subversion accède au référentiel directement depuis le système de fichiers (c'est-à-dire que l'URL du référentiel est de forme file:///path/to/repoou file://file-server/path/to/repo), il utilise les autorisations de votre système de fichiers pour accéder au référentiel. Et lorsque vous vous connectez via SSH tunneling ( svn+ssh://server/path/to/repo), SVN utilise vos autorisations FS sur le serveur , telles que déterminées par votre connexion SSH. Dans ces cas, svn checkout --usernamepeut ne pas fonctionner pour votre référentiel.

Michael Ratanapintha
la source
Merci pour la réponse rapide. L'indicateur --username semble être très collant, même lors des redémarrages. Et cela fonctionne très bien sur mon fichier: référentiel.
marchés
70

Pour svn sur ssh, essayez:

svn list svn+ssh://[user_name]@server_name/path_to_repo  

svn vous demandera le user_namemot de passe de.

aminalid
la source
1
Ne fonctionne pas avec les noms d'utilisateur comme: [email protected]
neoneye
4
https://user_name@.../pathn'a pas fonctionné pour moi (cygwin) mais --usernamefonctionne très bien.
zelanix
44

Vous pouvez configurer un nom d'utilisateur par défaut via ~ / .subversion / servers:

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

Veuillez noter que les anciennes versions de svn ne le prennent pas en charge (par exemple 1.3.1 [sic!]).

bleuté
la source
37
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn"

A fonctionné pour moi lorsque sur un autre compte d'utilisateur. Vous serez invité à saisir à nouveau le nom d'utilisateur / mot de passe. Vous devez vous connecter une fois comme ci-dessus et vous êtes prêt pour les heures suivantes (à moins que vous ne redémarriez votre machine).

chethan
la source
4
Soyez prudent lorsque vous fournissez le mot de passe sur la ligne de commande. Quiconque peut voir la liste des processus sur la machine pourra voir le mot de passe dans la liste des processus. Très bien sur un système mono-utilisateur, mais pas si bon sur un système multi-utilisateurs.
bleater
12

Si vous devez spécifier un nom d'utilisateur autre que votre utilisateur connecté pour l'utiliser avec svn + ssh, ajoutez simplement une entrée à votre fichier .ssh / config :

Hôte example.com
User jdoe
Aaron Dancygier
la source
man ssh_config vous en dira plus. Je n'ai pas encore trouvé de moyen de rendre cette dynamique (par exemple basée sur la variable d'environnement).
bbaassssiiee
11

Subversion me demande généralement mon "nom d'utilisateur Subversion" s'il échoue en utilisant mon nom d'utilisateur connecté. Donc, quand je suis paresseux (généralement), je le laisse simplement me demander mon mot de passe et je clique sur Entrée, j'attends l'invite du nom d'utilisateur et j'utilise mon nom d'utilisateur Subversion.

Sinon, la solution de Michael est un bon moyen de spécifier immédiatement le nom d'utilisateur.

Beau Simensen
la source
1
Je considère que c'est une meilleure réponse car cela fonctionne pour toutes les commandes SVN (checkout, commit, etc.) où l'indicateur --username semble être soit inexistant soit légèrement différent pour diverses commandes ...
edwardsharp
7

La plupart des réponses semblent être pour svn + ssh, ou ne semblent pas fonctionner pour nous.

Pour l'accès http, la façon la plus simple de déconnecter un utilisateur SVN de la ligne de commande est:

rm ~/.subversion/auth/svn.simple/*

Astuce chapeau: http://www.yolinux.com/TUTORIALS/Subversion.html

Danny Schoemann
la source
6

Je crois que si vous utilisez la méthode file: // pour accéder à votre référentiel subversion, vos modifications sont toujours effectuées sous l'utilisateur qui accède au référentiel. Vous devez utiliser une méthode qui prend en charge l'authentification telle que http: // ou svn: //.

Voir http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.choosing

Kamil Kisiel
la source
6

Utilisation de Subversion avec le module Apache ou svnserve. J'ai pu effectuer des opérations en utilisant plusieurs utilisateurs --username.

Chaque fois que vous appelez une commande Subversion en tant que `` nouvel '' utilisateur, votre $HOME/.subversion/auth/<authentication-method>/annuaire aura une nouvelle entrée mise en cache pour cet utilisateur (en supposant que vous pouvez vous authentifier avec le mot de passe ou la méthode d'authentification correcte pour le serveur que vous contactez en tant que cet utilisateur particulier) .

Don Wakefield
la source
2

Si vous utilisez svn + ssh pour vous connecter au référentiel, la seule chose qui vous authentifie et vous autorise est vos informations d'identification ssh. TOUT le reste est ignoré. Votre nom d'utilisateur sera enregistré dans subversion exactement comme il est établi dans votre connexion ssh. Une excellente explication de ceci est sur jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

codeMonster
la source
2

Accédez à ~/.subversion/auth/svn.simple/*et vous verrez une liste de fichiers contenant les informations sur votre compte utilisateur svn. Supprimez simplement toutes les autres dont vous n'avez pas besoin.

Après cela, lorsque vous faites quoi que ce soit concernant le fonctionnement de SVN, comme commit, rm, etc. Vous serez invité à nouveau à saisir votre nom d'utilisateur ou vos mots de passe.

Alan Dong
la source
-1

TortoiseSVN demande toujours le nom d'utilisateur. (à moins que vous ne le lui disiez)

récursif
la source
Non, ce n'est pas le cas. Pas sur 1.9.5 pour Linux, au moins.
drkvogel
Il utilise votre nom d'utilisateur local par défaut, ce qui n'est pas toujours ce que vous voulez lorsque vous vous connectez à un référentiel distant.
drkvogel
-3

Je crois que vous pouvez définir la SVN_USERvariable d'environnement pour changer votre nom d'utilisateur SVN.

Sophie Alpert
la source
3
Pouvez-vous fournir une référence pour cela? J'ai fait une recherche et trouvé seulement svn_username, qui est un patch que quelqu'un a fait et je ne peux pas dire s'il est parvenu à la ligne principale ou non ... Je pense que j'aurais trouvé d'autres hits si c'était le cas.
commercialise le