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.

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.


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.


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!]).


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).


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


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.


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



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) .


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


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.


-1

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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.