SVN Benutzername ändern

86

Ich habe viele Beispiele gefunden, wie man den Benutzernamen für bestimmte Revisionen ändert und so weiter.

Was ich jedoch brauche, ist Folgendes: Ich habe eine Prüfung mit den Authentifizierungsdaten eines Arbeitskollegen durchgeführt und muss diese für zukünftige Festschreibungen in meine Anmeldeinformationen ändern.

Ich kann nicht einfach mit meinen Anmeldeinformationen auschecken, da bereits viele Änderungen vorgenommen wurden ...

Kennt jemand das?

axel freudiger
quelle
Interessante Frage! Es scheint keinen anderen Weg zu geben, als alle gespeicherten Authentifizierungsdaten zu löschen.
Pekka
@ Pekka: Gute Antwort. Die Frage war jedoch nicht spezifisch für TortoiseSVN.
Raphael Schweikert

Antworten:

73

Sie können den Benutzer mit ändern

  • Subversion 1.6 und früher:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 und höher:

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

Um herauszufinden, was protocol://currentUser@server/pathist, laufen Sie

svn info

in Ihrer Arbeitskopie.

Ingo Kegel
quelle
4
Ich erhalte die Fehlermeldung "svn: E155024: Ungültiges Quell-URL-Präfix: 'protocol: // currentUser @ server / path' (überschneidet nicht die URL des Ziels 'protocol: // newUser @ server / path')" [mit meinen realen URLs, natürlich]
James Roth
3
Dies funktioniert nicht für einfache http-auth-Authentifizierungsschemata. In dieser Antwort erfahren Sie, wie Sie die gespeicherten Benutzeranmeldeinformationen für diesen Anwendungsfall löschen. @ James, das ist wahrscheinlich dein Problem.
Caleb
Geniales Zeug .. Thnaks :)
Karma
64

Der einfachste Weg, dies zu tun, besteht darin, einfach die Option --username beim nächsten Auschecken oder Festschreiben zu verwenden. Beispielsweise:

svn commit --username newUser

oder

svn co --username newUser

Es wird dann zwischengespeichert und als Standardbenutzername für zukünftige Befehle verwendet.

Siehe auch: Kann ich in Subversion ein anderer Benutzer als mein Anmeldename sein?

Matt Browne
quelle
Ich habe das getan und dann svn infound ich sehe keine Änderung in der AuthorZeile.
vsync
1
Über den obigen Link: "Wenn Subversion direkt vom Dateisystem aus auf das Repository zugreift, verwendet es Ihre Dateisystemberechtigungen, um auf das Repository zuzugreifen. (Wenn Sie eine Verbindung über SSH-Tunneling herstellen, verwendet SVN Ihre FS-Berechtigungen auf dem Server, wie von Ihnen festgelegt SSH-Anmeldung.) Daher funktioniert svn checkout --username möglicherweise nicht für Ihr Repository. "
Matt Browne
@ MattBrowne ist korrekt. Ein Pfad wie "svn + ssh: //svn.server.com" berücksichtigt die Änderung von --username nicht. Die akzeptierte Antwort, die relocate verwendet, war die einzige Möglichkeit, sie zu ändern.
FlipMcF
51

Ich hatte genau das gleiche Problem und fand die Lösung in Wo speichert der SVN-Client Benutzerauthentifizierungsdaten? ::

  1. cdzu ~/.subversion/auth/.
  2. Tun Sie fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Löschen Sie die gefundene Datei.
  4. Bei der nächsten Operation im Repository werden Sie erneut nach Informationen zu Benutzername und Kennwort gefragt.

(Für Windows sind die Schritte analog; das authVerzeichnis befindet sich in %APPDATA%\Subversion\).

Beachten Sie, dass dies nur für SVN-Zugriffsschemata funktioniert, bei denen der Benutzername Teil der Serveranmeldung ist, sodass Repositorys, auf die mit zugegriffen wird, nicht verwendet werden file://.

Raphael Schweikert
quelle
1
Wenn Sie IntelliJ IDEA ausführen, müssen Sie IntelliJ auch neu starten, damit die Änderungen wirksam werden
AndersG
1
Der fgrepBefehl sollte ein haben -l, damit der Befehl Ihnen den Dateipfad mitteilt. Ich wollte es bearbeiten, aber es ist nicht lang genug.
Vguzmanp
16

Der Befehl, der ausgeführt werden kann:

svn up --username newUsername

Funktioniert perfekt ;)

PS Nur ein Hinweis: Die Option "--username" kann für jeden "svn" -Befehl ausgeführt werden, nicht nur für ein Update.

Aurimas
quelle
5

Wenn Ihr Protokoll http ist und Sie Subversion 1.7 verwenden, können Sie den Benutzer jederzeit wechseln, indem Sie einfach die globale Option --username für einen beliebigen Befehl verwenden.

Als Ingos Methode bei mir nicht funktionierte, fand ich, dass dies funktionierte.

Adam Nutt
quelle
3

Gehe zu Tortoise SVN --> Settings --> Saved Data.

Es gibt eine Option zum Löschen von Authentifizierungsdaten, klicken Sie auf die Schaltfläche Löschen und Sie können auswählen, für welche Verbindung Sie Benutzer-ID / PwD löschen möchten.

Nachdem Sie dies getan haben, werden beim Auschecken oder Aktualisieren die Benutzer-ID und das Kennwort erneut angezeigt.

Wan
quelle
2

Für Win10 sollten Sie diesen Ordner entfernen und Ihre IDE schließen / öffnen

C: \ Benutzer \ Benutzer \ AppData \ Roaming \ Subversion \ auth

, auch in meinen Projekten keine ".subversion" -Ordner, nur ".svn"

bratez
quelle
1

Für diejenigen, die zufällig zu spät feststellen, dass sie sich mit den falschen Anmeldeinformationen verpflichtet haben, besteht die Lösung (nachträglich) darin, den SVN-Autor dieser Revision zu ändern: siehe diese Frage

Grundsätzlich lautet die Syntax:

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

Basierend auf der Lösung von Ingo Kegel habe ich ein "kleines" Bash-Skript erstellt, um den Benutzernamen in allen Unterordnern zu ändern. Erinnere dich an:

  1. Veränderung <NEW_USERNAME> zum neuen Benutzernamen.
  2. Wechseln Sie <OLD_USERNAME>zum aktuellen Benutzernamen (wenn Sie derzeit keinen Benutzernamen festgelegt haben, entfernen Sie ihn einfach <OLD_USERNAME>@).

Im folgenden Code wird der Befehl svn nur ausgedruckt (nicht ausgeführt). Um den Befehl svn auszuführen, entfernen Sie einfach das echoLeerzeichen und das Leerzeichen davor (direkt darüber 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

Ich hoffe, Sie finden es nützlich!

zpon
quelle
0

Ich glaube, Sie könnten Ihren eigenen Zweig (mit Ihrem eigenen Berechtigungsnachweis) aus demselben Stamm wie der Zweig Ihres Arbeitskollegen erstellen, von dem Zweig Ihres Arbeitskollegen zu Ihrer Arbeitskopie zusammenführen und dann von Ihrem Zweig zusammenführen. Alle zukünftigen Commits sollten als von Ihnen stammend markiert werden.

Martin
quelle
0

Sie können Ihren Kollegen bitten, einen Patch zu erstellen, der alle vorgenommenen Änderungen in einer einzigen Datei zusammenfasst, die Sie auf Ihren eigenen Check-out anwenden können. Dadurch werden alle Ihre Dateien entsprechend aktualisiert. Anschließend können Sie die Änderungen auf seiner Seite rückgängig machen und Ihre einchecken.

Alex
quelle