SVN zmienia nazwę użytkownika


86

Znalazłem wiele przykładów, jak zmienić nazwę użytkownika dla określonych wersji i tak dalej.

Potrzebuję jednak tego: dokonałem transakcji z poświadczeniami uwierzytelniającymi współpracownika i muszę je zmienić na moje poświadczenia na potrzeby przyszłych zatwierdzeń.

Nie mogę po prostu zapłacić za pomocą moich poświadczeń z powodu wielu zmian, które zostały już wprowadzone ...

Czy ktoś to zna?


Interesujące pytanie! Wydaje się, że nie ma innego sposobu niż wyczyszczenie wszystkich przechowywanych danych uwierzytelniania.
Pekka

@Pekka: Dobra odpowiedź. Pytanie nie było jednak specyficzne dla TortoiseSVN.
Raphael Schweikert

Odpowiedzi:


73

Możesz zmienić użytkownika za pomocą

  • Subversion 1.6 i wcześniejsze:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 i nowsze:

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

Aby dowiedzieć się, co to protocol://currentUser@server/pathjest, biegnij

svn info

w kopii roboczej.


4
Wyświetla się błąd „svn: E155024: Nieprawidłowy prefiks adresu URL źródła:„ protokół: // currentUser @ server / path ”(nie pokrywa się z adresem URL celu„ protocol: // newUser @ server / path ”)” [z moimi prawdziwymi adresami URL, oczywiście]
James Roth

3
To nie działa w przypadku zwykłych schematów uwierzytelniania http-auth. Zobacz tę odpowiedź, aby dowiedzieć się, jak usunąć zapisane poświadczenia użytkownika dla tego przypadku użycia. @James to prawdopodobnie twój problem.
Caleb,

Genialne rzeczy… Dzięki :)
Karma

64

Najłatwiejszym sposobem jest po prostu użycie opcji --username przy następnym pobraniu lub zatwierdzeniu. Na przykład:

svn commit --username newUser

lub

svn co --username newUser

Zostanie wtedy zapisany w pamięci podręcznej i będzie używany jako domyślna nazwa użytkownika dla przyszłych poleceń.

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


Zrobiłem to, a potem svn infoi nie widzę zmiany w Authorlinii.
vsync

2
Z linku powyżej: "kiedy Subversion uzyskuje dostęp do repozytorium bezpośrednio z systemu plików, używa uprawnień twojego systemu plików, aby uzyskać dostęp do repozytorium. (Kiedy łączysz się przez tunelowanie SSH, SVN używa twoich uprawnień FS na serwerze, określonych przez twoje Logowanie SSH.) Więc svn checkout - nazwa_użytkownika może nie działać w twoim repozytorium. "
Matt Browne

1
@MattBrowne ma rację. ścieżka taka jak „svn + ssh: //svn.server.com” nie będzie honorować zmiany --username. Zaakceptowana odpowiedź, która używa relokacji, była jedynym sposobem, w jaki mogłem to zmienić.
FlipMcF,

51

Miałem dokładnie ten sam problem i znalazłem rozwiązanie w Gdzie klient SVN przechowuje dane uwierzytelniające użytkownika? :

  1. cddo ~/.subversion/auth/.
  2. Zrób fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Usuń znaleziony plik.
  4. Następna operacja na repozytorium poprosi Cię ponownie o podanie nazwy użytkownika / hasła.

(W systemie Windows kroki są analogiczne; authkatalog znajduje się w %APPDATA%\Subversion\).

Zauważ, że zadziała to tylko dla schematów dostępu SVN, w których nazwa użytkownika jest częścią loginu serwera, więc nie jest używana dla repozytoriów, do których można uzyskać dostęp za pomocą file://.


1
Warto zauważyć, że jeśli uruchomisz IntelliJ IDEA, musisz również ponownie uruchomić IntelliJ, aby zmiany zaczęły obowiązywać
AndersG

1
fgreppolecenie powinno mieć rozszerzenie -l, aby polecenie wskazywało ścieżkę do pliku. Miałem go edytować, ale to za mało.
vguzmanp

16

Polecenie, które można wykonać:

svn up --username newUsername

Działa świetnie ;)

PS Tylko wskazówka: opcja "--username" może być uruchomiona przy każdym poleceniu "svn", nie tylko przy aktualizacji.


5

Jeśli twoim protokołem jest http i używasz Subversion 1.7, możesz zmienić użytkownika w dowolnym momencie, po prostu używając opcji globalnej --username w dowolnym poleceniu.

Kiedy metoda Ingo nie działała dla mnie, to właśnie okazało się skuteczne.


3

Idź do Tortoise SVN --> Settings --> Saved Data.

Istnieje opcja wyczyszczenia danych uwierzytelniających, kliknij przycisk wyczyść, a to pozwoli ci wybrać połączenie, dla którego chcesz wyczyścić identyfikator użytkownika / pwd.

Gdy to zrobisz, każde działanie związane z wyrejestrowaniem lub aktualizacją spowoduje ponowne wyświetlenie monitu o identyfikator użytkownika i hasło.


2

w przypadku Win10 należy usunąć ten folder i zamknąć / otworzyć swoje IDE

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

, również w moich projektach nie ma folderów ".subversion", tylko ".svn"


1

Również dla tych, którzy zdali sobie sprawę zbyt późno, że popełnili błąd z niewłaściwymi poświadczeniami, rozwiązaniem (po fakcie) jest zmiana autora svn tej rewizji: zobacz to pytanie

Zasadniczo składnia jest następująca:

svn propset --revprop -r (revision_number) svn:author (new username)

1

Bazując na rozwiązaniu Ingo Kegela stworzyłem „mały” skrypt bash do zmiany nazwy użytkownika we wszystkich podfolderach. Pamiętaj by:

  1. Zmień <NEW_USERNAME>na nową nazwę użytkownika.
  2. Zmień <OLD_USERNAME>na obecną nazwę użytkownika (jeśli aktualnie nie masz ustawionej nazwy użytkownika, po prostu usuń <OLD_USERNAME>@).

W poniższym kodzie polecenie svn jest tylko drukowane (nie wykonywane). Aby polecenie svn zostało wykonane, po prostu usuń przed nim echoi białe znaki (tuż powyżej 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

Mam nadzieję, że okaże się to przydatne!


0

Uważam, że możesz stworzyć swój własny oddział (używając własnych danych uwierzytelniających) z tego samego łącza co oddział Twojego współpracownika, scalić go z oddziału współpracownika do kopii roboczej, a następnie scalić go z oddziału. Wszystkie przyszłe zmiany powinny być oznaczone jako pochodzące od Ciebie.


0

Możesz poprosić współpracownika o utworzenie łatki, która zwinie wszystkie wprowadzone zmiany w jeden plik, który możesz zastosować do własnego wyewidencjonowania. Spowoduje to odpowiednią aktualizację wszystkich plików, a następnie będziesz mógł cofnąć zmiany po jego stronie i sprawdzić swoje.

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.