SVN changer le nom d'utilisateur

86

J'ai trouvé beaucoup d'exemples sur la façon de changer le nom d'utilisateur pour des révisions spécifiques et ainsi de suite.

Mais ce dont j'ai besoin, c'est de ceci: j'ai effectué un paiement avec les informations d'authentification d'un collègue et je dois les remplacer par mes informations d'identification pour les commits futurs.

Je ne peux pas simplement payer avec mes informations d'identification en raison des nombreux changements qui ont déjà été effectués ...

Quelqu'un connaît-il cela?

Axel Freudiger
la source
Question interessante! Il ne semble pas y avoir d'autre moyen que d' effacer toutes les données d'authentification stockées.
Pekka
@Pekka: Bonne réponse. La question n'était cependant pas spécifique à TortoiseSVN.
Raphael Schweikert

Réponses:

73

Vous pouvez changer d'utilisateur avec

  • Subversion 1.6 et versions antérieures:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 et versions ultérieures:

    svn relocate protocol://currentUser@server/path protocol://newUser@server/path
    

Pour savoir ce que protocol://currentUser@server/pathc'est, cours

svn info

dans votre copie de travail.

Ingo Kegel
la source
4
J'obtiens une erreur "svn: E155024: Préfixe d'URL source non valide: 'protocol: // currentUser @ server / path' (ne chevauche pas l'URL de la cible 'protocol: // newUser @ server / path')" [avec mes URL réelles, bien sûr]
James Roth
3
Cela ne fonctionne pas pour les schémas d'authentification http-auth simples. Consultez cette réponse pour savoir comment supprimer les informations d'identification utilisateur enregistrées pour ce cas d'utilisation. @James, c'est probablement votre problème.
Caleb
Trucs géniaux .. Thnaks :)
Karma
64

Le moyen le plus simple de le faire est d'utiliser simplement l'option --username lors de votre prochaine vérification ou validation. Par exemple:

svn commit --username newUser

ou

svn co --username newUser

Il sera ensuite mis en cache et sera utilisé comme nom d'utilisateur par défaut pour les futures commandes.

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

Matt Browne
la source
Je l'ai fait, puis svn infoet je ne vois aucun changement dans la Authorligne.
vsync
2
À partir du lien ci-dessus: "lorsque Subversion accède au référentiel directement depuis le système de fichiers, il utilise les autorisations de votre système de fichiers pour accéder au référentiel. (Lorsque vous vous connectez via le tunnel SSH, SVN utilise vos autorisations FS sur le serveur, comme déterminé par votre Connexion SSH.) Donc svn checkout --username peut ne pas fonctionner pour votre référentiel. "
Matt Browne
1
@MattBrowne a raison. un chemin comme "svn + ssh: //svn.server.com" ne respectera pas le changement de --username. La réponse acceptée qui utilise relocaliser était la seule façon dont je pouvais la changer.
FlipMcF
51

J'ai eu exactement le même problème et j'ai trouvé la solution dans Où le client SVN stocke-t-il les données d'authentification utilisateur? :

  1. cdà ~/.subversion/auth/.
  2. Faites fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Supprimez le fichier trouvé.
  4. La prochaine opération sur le référentiel vous demandera à nouveau des informations de nom d'utilisateur / mot de passe.

(Pour Windows, les étapes sont analogues; le authrépertoire est dans %APPDATA%\Subversion\).

Notez que cela ne fonctionnera que pour les schémas d'accès SVN où le nom d'utilisateur fait partie de la connexion au serveur, donc cela ne sert à rien pour les référentiels accessibles à l'aide de file://.

Raphael Schweikert
la source
1
Il convient de noter que si vous exécutez IntelliJ IDEA, vous devez également redémarrer IntelliJ pour que les modifications prennent effet
AndersG
1
la fgrepcommande doit avoir un -l, de sorte que la commande vous indique le chemin du fichier. J'allais le modifier, mais ce n'est pas assez long.
vguzmanp
16

La commande, qui peut être exécutée:

svn up --username newUsername

Fonctionne parfaitement ;)

PS Juste un indice: l'option "--username" peut être exécutée sur n'importe quelle commande "svn", pas seulement update.

Aurimas
la source
5

Si votre protocole est http et que vous utilisez Subversion 1.7, vous pouvez changer d'utilisateur à tout moment en utilisant simplement l'option globale --username sur n'importe quelle commande.

Lorsque la méthode d'Ingo ne fonctionnait pas pour moi, c'est ce que j'ai trouvé qui fonctionnait.

Adam Nutt
la source
3

Allez à Tortoise SVN --> Settings --> Saved Data.

Il existe une option pour effacer les données d'authentification, cliquez sur le bouton Effacer, et cela vous permettra de sélectionner la connexion pour laquelle vous voulez effacer l'ID utilisateur / pwd.

Après avoir fait cela, toute activité de vérification ou de mise à jour, il reprendra l'ID utilisateur et le mot de passe.

Blême
la source
2

pour Win10, vous devez supprimer ce dossier et fermer / ouvrir votre IDE

C: \ Users \ User \ AppData \ Roaming \ Subversion \ auth

, également dans mes projets pas de dossiers ".subversion", seulement ".svn"

Bratez
la source
1

Aussi, pour ceux qui se sont rendu compte trop tard, qu'ils se sont engagés avec de mauvaises informations d'identification, la solution (après coup) est de changer l'auteur svn de cette révision: voir cette question

Fondamentalement, la syntaxe est:

svn propset --revprop -r (revision_number) svn:author (new username)
Patrice M.
la source
1

En me basant sur la solution d'Ingo Kegel, j'ai créé un "petit" script bash pour changer le nom d'utilisateur dans tous les sous-dossiers. Se souvenir de:

  1. Changez <NEW_USERNAME>pour le nouveau nom d'utilisateur.
  2. Changez <OLD_USERNAME>pour le nom d'utilisateur actuel (si vous n'avez actuellement aucun nom d'utilisateur défini, supprimez simplement <OLD_USERNAME>@).

Dans le code ci-dessous, la commande svn est uniquement imprimée (non exécutée). Pour exécuter la commande svn, supprimez simplement les echoespaces et devant (juste au-dessus popd).

for d in */ ; \
do echo $d ; pushd $d ; \
url=$(svn info | grep "URL: svn") ; \
url=$(echo ${url#"URL: "}) ; \
newurl=$(echo $url | sed "s/svn+ssh:\/\/<OLD_USERNAME>@/svn+ssh:\/\/<NEW_USERNAME>@/") ; \
echo "Old url: "$url ; echo "New url: "$newurl ; \
echo svn relocate $url $newurl ; \
popd ; \
done

J'espère que vous le trouverez utile!

zpon
la source
0

Je crois que vous pouvez créer votre propre branche (en utilisant vos propres informations d'identification) à partir du même tronc que la branche de votre collègue, fusionner de la branche de votre collègue à votre copie de travail, puis fusionner à partir de votre branche. Tous les futurs commit doivent être marqués comme venant de vous.

Martin
la source
0

Vous pouvez demander à votre collègue de créer un correctif, qui regroupera toutes les modifications apportées en un seul fichier que vous pourrez appliquer à votre propre extraction. Cela mettra à jour tous vos fichiers de manière appropriée et vous pourrez ensuite annuler les modifications de son côté et enregistrer les vôtres.

Alex
la source