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

253

Ich möchte wissen, wie ich Subversionden Namen ändern kann, unter dem meine Änderungen angezeigt werden.

Ich fange gerade an zu benutzen Subversion. Ich verwende es derzeit zur Versionskontrolle von Codes auf einem XP-Laptop, auf dem ich immer unter dem Namen meiner Frau angemeldet bin. Ich möchte, dass die Subversion-Datenbank die Änderungen unter meinem Namen anzeigt.

Später werde ich die Datenbank replizieren, damit sie für das ganze Haus zugänglich ist. Meine Frau benutzt den Bürocomputer, auf dem sie immer unter meinem Namen angemeldet ist. Ich werde es wahrscheinlich so einrichten, dass es automatisch geänderte Dokumente eincheckt ... vorzugsweise unter ihrem Namen.

Irgendwann werde ich es wahrscheinlich von einem Linux-Rechner unter einem anderen Benutzernamen verwenden.

Gibt es eine Möglichkeit, die Benutzerumgebung zu ändern, um den Benutzernamen zu ändern, den Subversion Sie aufruft? Ich würde so etwas wie eine Einstellung erwarten, SVN_USERNAME='Mark'die überschreibt, aber normalerweise den Namen bekommt.

Update: Es sieht so aus, als würde das --usernameFlag, auf das Michael verwiesen hat, den Namen ändern, von dem berichtet wird "svn stat", selbst für lokale Datei: Repositorys. Außerdem ist es klebrig, sodass Sie es für den nächsten Befehl nicht angeben müssen. Ich habe sogar neu gestartet und es wurde immer noch der "--username"Wert von meinem vorherigen Start verwendet.

Märkte
quelle

Antworten:

280

Die meisten Subversion-Befehle verwenden die --usernameOption, den Benutzernamen anzugeben, den Sie für das Repository verwenden möchten. Subversion merkt sich den letzten Repository-Benutzernamen und das Kennwort, die in jeder Arbeitskopie verwendet wurden. Dies bedeutet unter anderem, dass Sie bei Verwendung svn checkout --username myuserden Benutzernamen nie wieder angeben müssen.

Wie Kamil Kisiel sagt , verwendet Subversion beim Zugriff auf das Repository direkt vom Dateisystem aus (dh die Repository-URL hat die Form file:///path/to/repooder file://file-server/path/to/repo) Ihre Dateisystemberechtigungen, um auf das Repository zuzugreifen. Wenn Sie eine Verbindung über SSH-Tunneling ( svn+ssh://server/path/to/repo) herstellen, verwendet SVN Ihre FS-Berechtigungen auf dem Server , wie durch Ihre SSH-Anmeldung festgelegt. In diesen Fällen svn checkout --usernamefunktioniert es möglicherweise nicht für Ihr Repository.

Michael Ratanapintha
quelle
Danke für die schnelle Antwort. Das Flag --username scheint selbst bei Neustarts sehr klebrig zu sein. Und es funktioniert gut in meiner Datei: Repository.
vermarktet
70

Für svn über ssh versuchen Sie:

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

svn fordert Sie zur Eingabe des user_namePassworts auf.

Aminalid
quelle
1
Funktioniert nicht mit Benutzernamen wie: [email protected]
neoneye
4
https://user_name@.../pathhat bei mir nicht funktioniert (cygwin) aber --usernamefunktioniert gut.
Zelanix
44

Sie können einen Standardbenutzernamen über ~ / .subversion / servers einrichten:

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

Bitte beachten Sie, dass ältere Versionen von svn dies nicht unterstützen (z. B. 1.3.1 [sic!]).

blau gefärbt
quelle
37
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn"

Arbeitete für mich in einem anderen Benutzerkonto. Sie werden jedoch aufgefordert, den Benutzernamen / das Passwort erneut einzugeben. Sie müssen sich wie oben beschrieben einmal anmelden und sind bereit für die folgenden Zeiten (es sei denn, Sie starten Ihren Computer neu).

Chethan
quelle
4
Seien Sie vorsichtig, wenn Sie das Passwort in der Befehlszeile eingeben. Jeder, der die Prozessliste auf dem Computer sehen kann, kann das Kennwort in der Prozessliste sehen. Gut auf einem Einzelbenutzersystem, aber nicht so gut auf einem Mehrbenutzersystem.
Bleater
12

Wenn Sie einen anderen Benutzernamen als Ihren angemeldeten Benutzer für die Verwendung mit svn + ssh angeben müssen, fügen Sie einfach einen Eintrag zu Ihrer .ssh / config-Datei hinzu :

Host example.com
Benutzer jdoe
Aaron Dancygier
quelle
man ssh_config wird dir alles darüber erzählen. Ich habe noch keine Möglichkeit gefunden, diese Dynamik zu erzeugen (zum Beispiel basierend auf Umgebungsvariablen).
bbaassssiiee
11

Subversion fragt mich normalerweise nach meinem "Subversion-Benutzernamen", wenn die Verwendung meines angemeldeten Benutzernamens fehlschlägt. Wenn ich (normalerweise) faul bin, lasse ich mich einfach nach meinem Passwort fragen und drücke die Eingabetaste. Warten Sie auf die Eingabeaufforderung für den Benutzernamen und verwenden Sie meinen Subversion-Benutzernamen.

Ansonsten ist Michaels Lösung eine gute Möglichkeit, den Benutzernamen sofort anzugeben.

Beau Simensen
quelle
1
Ich halte dies für eine bessere Antwort, da es für alle SVN-Befehle (Auschecken, Festschreiben usw.) funktioniert, bei denen das Flag --username für verschiedene Befehle entweder nicht vorhanden oder geringfügig unterschiedlich zu sein scheint ...
edwardsharp
7

Die meisten Antworten scheinen für svn + ssh zu sein oder für uns nicht zu funktionieren.

Für den http-Zugriff können Sie einen SVN-Benutzer am einfachsten über die Befehlszeile abmelden:

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

Hutspitze: http://www.yolinux.com/TUTORIALS/Subversion.html

Danny Schoemann
quelle
6

Ich glaube, wenn Sie die file: // -Methode verwenden, um auf Ihr Subversion-Repository zuzugreifen, werden Ihre Änderungen immer unter dem Benutzer durchgeführt, der auf das Repository zugreift. Sie müssen eine Methode verwenden, die die Authentifizierung unterstützt, z. B. http: // oder svn: //.

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

Kamil Kisiel
quelle
6

Verwenden von Subversion mit dem Apache-Modul oder svnserve. Ich konnte Operationen als mehrere Benutzer ausführen --username.

Jedes Mal, wenn Sie einen Subversion-Befehl als "neuer" Benutzer aufrufen, wird in Ihrem $HOME/.subversion/auth/<authentication-method>/Verzeichnis ein neuer Eintrag für diesen Benutzer zwischengespeichert (vorausgesetzt, Sie können sich mit dem richtigen Kennwort oder der richtigen Authentifizierungsmethode für den Server authentifizieren, den Sie als diesen bestimmten Benutzer kontaktieren). .

Don Wakefield
quelle
2

Wenn Sie svn + ssh verwenden, um eine Verbindung zum Repository herzustellen, sind das einzige, was Sie authentifiziert und autorisiert, Ihre ssh-Anmeldeinformationen. ALLES andere wird ignoriert. Ihr Benutzername wird in Subversion genau so angemeldet, wie es in Ihrer SSH-Verbindung festgelegt ist. Eine ausgezeichnete Erklärung hierfür finden Sie unter jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

codeMonster
quelle
2

Gehen Sie zu ~/.subversion/auth/svn.simple/*, und Sie sehen eine Liste der Dateien, die die Informationen zu Ihrem SVN-Benutzerkonto enthalten. Löschen Sie einfach alle anderen, die Sie nicht benötigen.

Wenn Sie danach alles tun, was den SVN-Betrieb betrifft, wie z. B. Festschreiben, rm usw. Sie werden erneut aufgefordert, einen Benutzernamen oder ein Passwort einzugeben.

Alan Dong
quelle
-1

TortoiseSVN fordert immer zur Eingabe des Benutzernamens auf. (es sei denn, Sie sagen es nicht)

rekursiv
quelle
Nein, tut es nicht. Zumindest nicht unter 1.9.5 für Linux.
Drkvogel
Standardmäßig wird Ihr lokaler Benutzername verwendet. Dies ist nicht immer das, was Sie möchten, wenn Sie eine Verbindung zu einem Remote-Repository herstellen.
Drkvogel
-3

Ich glaube, Sie können die SVN_USERUmgebungsvariable so einstellen , dass Ihr SVN-Benutzername geändert wird.

Sophie Alpert
quelle
3
Können Sie eine Referenz dafür liefern? Ich habe eine Suche durchgeführt und nur svn_username gefunden, ein Patch, den jemand gemacht hat, und ich kann nicht sagen, ob er es bis zur Hauptlinie geschafft hat oder nicht ... Ich würde denken, ich hätte andere Treffer gefunden, wenn ja.
vermarktet