2009-01-01 10 views
217

Je voudrais savoir comment obtenir Subversion pour changer le nom que mes changements apparaissent sous. Je commence tout juste à utiliser Subversion. Je l'utilise actuellement pour le code de contrôle de version sur un ordinateur portable XP où je suis toujours connecté sous le nom de ma femme. J'aimerais que la base de données Subversion affiche les changements sous mon nom.Dans Subversion, puis-je être un utilisateur autre que mon nom de connexion?

Plus tard, je vais répliquer 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. Par la suite, 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 le réglage SVN_USERNAME='Mark' qui remplacerait mais il obtient généralement le nom.

Mise à jour: Il semble que le drapeau --username que Michael appelé ne le travail pour changer le nom rapporté par "svn stat", même pour les fichiers locaux: référentiels. De plus, il est collant donc vous n'avez pas besoin de le spécifier pour la commande suivante. J'ai même redémarré et il utilisait toujours la valeur "--username" de mon précédent démarrage.

Répondre

252

La plupart des commandes Subversion utilisent l'option --username pour spécifier le nom d'utilisateur que vous souhaitez utiliser dans le référentiel. Subversion mémorise le nom d'utilisateur et le mot de passe du dernier dépôt utilisés dans chaque copie de travail, ce qui signifie, entre autres, que si vous utilisez svn checkout --username myuser, vous n'avez plus besoin de spécifier le nom d'utilisateur.

As Kamil Kisiel says, lorsque Subversion accède au dépôt directement sur le système de fichiers (qui est, l'URL du référentiel est de forme file:///path/to/repo ou 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 connect via SSH tunneling (svn+ssh://server/path/to/repo), SVN utilise vos autorisations FS sur le serveur , tel que déterminé par votre connexion SSH. Dans ces cas, svn checkout --username peut ne pas fonctionner pour votre référentiel.

+0

Merci pour la réponse rapide. L'indicateur --username semble très collant, même entre les redémarrages. Et cela fonctionne très bien sur mon fichier: référentiel. – markets

11

Subversion me demande habituellement mon "nom d'utilisateur Subversion" s'il échoue en utilisant mon nom d'utilisateur connecté. Donc, quand je suis paresseux (habituellement) je vais juste le laisser me demander mon mot de passe et je vais appuyer sur Entrée, et attendre l'invite du nom d'utilisateur et utiliser mon nom d'utilisateur Subversion.

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

+1

Je considère que c'est une meilleure réponse car cela fonctionne pour toutes les commandes SVN (checkout, commit, etc) où le drapeau --username semble être inexistant ou légèrement différent pour les différentes commandes ... – edwardsharp

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

0

TortoiseSVN demande toujours le nom d'utilisateur. (sauf indication contraire)

6

Utilisation de Subversion avec le module Apache ou svnserve. J'ai été en mesure d'effectuer des opérations en tant qu'utilisateurs multiples en utilisant --username.Chaque fois que vous appelez une commande Subversion en tant que nouvel utilisateur, votre répertoire $HOME/.subversion/auth/<authentication-method>/ aura une nouvelle entrée en cache pour cet utilisateur (en supposant que vous puissiez vous authentifier avec le mot de passe ou la méthode d'authentification correcte pour le serveur que vous contactez comme cet utilisateur particulier).

-3

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

+3

Pouvez-vous fournir une référence pour cette? 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 l'a fait à la ligne principale ou pas ... Je penserais que j'aurais trouvé d'autres coups si c'est le cas. – markets

+0

Je viens de l'essayer, et cela n'a pas fonctionné (svn v1.6.17). – Tobias

69

Pour plus svn essayer ssh:

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

svn vous demandera le mot de passe de la user_name.

+6

Fonctionne également pour 'https: // user_name @ .../path'. – Frank

+1

Ne fonctionne pas avec les noms d'utilisateur comme: johndoe @ exemple.com – neoneye

+1

'https: // nom_utilisateur @ .../chemin' n'a pas fonctionné pour moi (cygwin) mais' --username' fonctionne bien. – zelanix

30
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn" 

J'ai travaillé pour moi sur un autre compte d'utilisateur. Vous serez invité à entrer à nouveau le nom d'utilisateur/mot de passe. Vous devez vous connecter comme ci-dessus une fois et vous êtes tous définis pour les périodes suivantes (sauf si vous redémarrez votre machine).

+4

Faites attention lorsque vous fournissez le mot de passe sur la ligne de commande. Tous ceux qui peuvent voir la liste des processus sur la machine pourront voir le mot de passe dans la liste des processus. Bien sur un système mono-utilisateur, mais pas si bon sur un système multi-utilisateur. – bleater

+6

aussi, votre mot de passe est enregistré dans une histoire de commande shell très consultable ... – Phob

36

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

[groups] 
yourgroupname = svn.example.com 

[yourgroupname] 
username = yourusername 

S'il vous plaît noter que les anciennes versions de svn ne supportent pas (par exemple 1.3.1 [sic!]).

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 cette est à jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

12

Si vous devez spécifier un nom d'utilisateur autre que votre utilisateur connecté pour une utilisation avec svn + ssh just add an entry to your .ssh/config file:

 
Host example.com 
User jdoe 
+0

man ssh_config vous dira tout à ce sujet. Je n'ai trouvé aucun moyen pour rendre cette dynamique (par exemple basée sur la variable d'environnement). – bbaassssiiee

+0

a travaillé comme un charme, merci – redDevil

7

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

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

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

Pointe du chapeau: http://www.yolinux.com/TUTORIALS/Subversion.html

2

Aller à ~/.subversion/auth/svn.simple/*, et vous verrez une liste des fichiers contenant les informations sur votre compte utilisateur svn. Supprimez simplement tous les autres dont vous n'avez pas besoin. Après cela, lorsque vous faites quoi que ce soit en ce qui concerne l'opération SVN, comme commit, rm, etc ,. Vous serez à nouveau invité à entrer le nom d'utilisateur ou les mots de passe.