Czy w Subversion mogę być użytkownikiem innym niż moja nazwa logowania?

253

Chciałbym wiedzieć, jak Subversionzmienić nazwę, pod którą pojawiają się moje zmiany.

Właśnie zaczynam używać Subversion. Obecnie używam go do kodu kontroli wersji na laptopie XP, gdzie zawsze jestem zalogowany pod imieniem mojej żony. Chciałbym, aby DB subversion wyświetlał zmiany pod moim imieniem.

Później skopiuję DB, aby był dostępny dla całego domu. Moja żona korzysta z komputera w biurze, na którym zawsze jest zalogowana pod moim imieniem. Prawdopodobnie skonfiguruję go tak, aby automatycznie sprawdzał zmodyfikowane dokumenty ... najlepiej pod jej nazwiskiem.

W końcu prawdopodobnie będę go używać z komputera z systemem Linux pod inną nazwą użytkownika.

Czy istnieje jakiś sposób na modyfikację środowiska użytkownika, aby zmienić nazwę użytkownika, którą wywołuje Subversion? Spodziewałbym się czegoś takiego jak ustawienie, SVN_USERNAME='Mark'które zastąpiłoby to, jednak zwykle otrzymuje nazwę.

Aktualizacja: Wygląda na to, że --usernameflaga, o której wspomniał Michael, działa w celu zmiany zgłaszanej nazwy "svn stat", nawet w przypadku lokalnych plików: repozytoriów. Ponadto jest lepki, więc nie trzeba go określać dla następnego polecenia. Nawet zrestartowałem komputer i nadal korzystałem z "--username"wartości z poprzedniego rozruchu.

rynki
źródło

Odpowiedzi:

280

Większość poleceń Subversion korzysta z --usernameopcji określania nazwy użytkownika, której chcesz użyć w repozytorium. Subversion zapamiętuje ostatnią nazwę użytkownika i hasło repozytorium użyte w każdej kopii roboczej, co oznacza między innymi, że jeśli użyjesz svn checkout --username myuser, nigdy nie będziesz musiał ponownie podawać nazwy użytkownika.

Jak mówi Kamil Kisiel , gdy Subversion uzyskuje dostęp do repozytorium bezpośrednio z systemu plików (tzn. Adres URL repozytorium ma formę file:///path/to/repolub file://file-server/path/to/repo), używa uprawnień systemu plików do uzyskania dostępu do repozytorium. A kiedy łączysz się za pomocą tunelowania SSH ( svn+ssh://server/path/to/repo), SVN używa twoich uprawnień FS na serwerze , określonych przez twój login SSH. W takich przypadkach svn checkout --usernamemoże nie działać w Twoim repozytorium.

Michael Ratanapintha
źródło
Dzięki za szybką odpowiedź. Flaga --username wydaje się być bardzo lepka, nawet podczas ponownego uruchamiania. I działa dobrze na moim pliku: repozytorium.
sprzedaje
70

W przypadku svn over ssh spróbuj:

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

svn wyświetli monit o podanie user_namehasła.

aminalid
źródło
1
Nie działa z
nazwami
4
https://user_name@.../pathnie działało dla mnie (cygwin), ale --usernamedziała dobrze.
zelanix
44

Możesz ustawić domyślną nazwę użytkownika poprzez ~ / .subversion / servers:

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

Należy pamiętać, że starsze wersje svn nie obsługują go (np. 1.3.1 [sic!]).

niebieskawy
źródło
37
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn"

Pracował dla mnie na innym koncie użytkownika. Zostaniesz poproszony o ponowne wprowadzenie nazwy użytkownika / hasła. Musisz zalogować się raz jak wyżej i wszystko jest ustawione na kolejne czasy (chyba że uruchomisz ponownie komputer).

Chethan
źródło
4
Zachowaj ostrożność, podając hasło w wierszu polecenia. Każdy, kto może zobaczyć listę procesów na komputerze, będzie mógł zobaczyć hasło na liście procesów. Dobrze w systemie dla jednego użytkownika, ale nie tak dobrze w systemie dla wielu użytkowników.
bleater
12

Jeśli musisz podać nazwę użytkownika inną niż zalogowany użytkownik do użytku z svn + ssh, po prostu dodaj wpis do pliku .ssh / config :

Host example.com
Użytkownik jdoe
Aaron Dancygier
źródło
man ssh_config opowie ci wszystko. Nie znalazłem jeszcze sposobu, aby uczynić to dynamicznym (na przykład w oparciu o zmienną środowiskową).
bbaassssiiee
11

Subversion zwykle prosi mnie o moją „Nazwę użytkownika Subversion”, jeśli nie powiedzie się przy użyciu mojej nazwy użytkownika. Tak więc, gdy jestem leniwy (zwykle), pozwolę, aby poprosił mnie o hasło i wcisnę Enter, poczekam na monit o nazwę użytkownika i użyję mojej nazwy użytkownika Subversion.

W przeciwnym razie rozwiązanie Michaela jest dobrym sposobem na natychmiastowe określenie nazwy użytkownika.

Beau Simensen
źródło
1
Uważam to za lepszą odpowiedź, ponieważ działa ona dla wszystkich poleceń SVN (kasa, zatwierdzenie itp.), Gdzie flaga --username wydaje się albo nie istnieć, albo nieco inna dla różnych poleceń ...
edwardsharp
7

Większość odpowiedzi wydaje się dotyczyć svn + ssh lub nie działa dla nas.

W przypadku dostępu HTTP najłatwiejszym sposobem wylogowania użytkownika SVN z wiersza poleceń jest:

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

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

Danny Schoemann
źródło
6

Uważam, że jeśli użyjesz metody file: //, aby uzyskać dostęp do repozytorium subversion, twoje zmiany są zawsze wykonywane w ramach użytkownika, który uzyskuje dostęp do repozytorium. Musisz użyć metody obsługującej uwierzytelnianie, takiej jak http: // lub svn: //.

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

Kamil Kisiel
źródło
6

Używanie Subversion z modułem Apache lub svnserve. Byłem w stanie wykonywać operacje, używając wielu użytkowników --username.

Za każdym razem, gdy wywołujesz polecenie Subversion jako „nowy” użytkownik, twój $HOME/.subversion/auth/<authentication-method>/katalog będzie miał nową pamięć podręczną dla tego użytkownika (zakładając, że możesz uwierzytelnić się za pomocą poprawnego hasła lub metody uwierzytelnienia dla serwera, z którym kontaktujesz się jako ten konkretny użytkownik) .

Don Wakefield
źródło
2

Jeśli używasz svn + ssh do łączenia się z repozytorium, jedyną rzeczą, która Cię uwierzytelnia i autoryzuje, są twoje poświadczenia ssh. WSZYSTKO jeszcze jest ignorowane. Twoja nazwa użytkownika zostanie zalogowana w subversion dokładnie tak, jak została ustanowiona w twoim połączeniu ssh. Doskonałe wyjaśnienie tego znajduje się na stronie jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

codeMonster
źródło
2

Przejdź do ~/.subversion/auth/svn.simple/*, a zobaczysz listę plików, która zawiera informacje o Twoim koncie użytkownika svn. Po prostu usuń wszystkie inne, których nie potrzebujesz.

Następnie, gdy robisz coś, co dotyczy operacji SVN, takie jak commit, rm itp. Ponownie pojawi się monit o wprowadzenie nazwy użytkownika lub hasła.

Alan Dong
źródło
-1

TortoiseSVN zawsze pyta o nazwę użytkownika. (chyba że powiesz, żeby tego nie robić)

rekurencyjny
źródło
Nie, nie ma. Przynajmniej nie w wersji 1.9.5 dla Linuksa.
drkvogel
Domyślnie używa lokalnej nazwy użytkownika, która nie zawsze jest taka, jakiej potrzebujesz, łącząc się ze zdalnym repozytorium.
drkvogel
-3

Wierzę, że możesz ustawić SVN_USERzmienną środowiskową, aby zmienić swoją nazwę użytkownika SVN.

Sophie Alpert
źródło
3
Czy możesz podać referencje? Przeprowadziłem wyszukiwanie i znalazłem tylko svn_username, która jest łatką, którą ktoś zrobił i nie mogę powiedzieć, czy dotarła do głównej linii, czy nie ... Myślę, że znalazłbym inne trafienia, jeśli tak.
sprzedaje