Czy istnieje sposób na zmianę nazwy użytkownika SVN w całej historii repozytorium?
Kiedy mój zespół zaczynał pracę z SVN, wszyscy po prostu używaliśmy naszych imion przy zatwierdzaniu do repozytorium, jednak teraz, gdy nasz zespół się rozrósł, napotykamy problemy, ponieważ właśnie zatrudniliśmy drugiego Mike
.
Chcielibyśmy zmienić nazwy użytkowników na takie same jak nazwa użytkownika na ich komputerze (imię i nazwisko initial + last name). Problem, który widzę jest taki, że historia SVN nadal będzie pokazywać stare nazwy użytkowników w commitach.
Czy jest narzędzie czy istnieje możliwość zmiany nazw użytkowników w całej historii repozytorium?
Na przykład chciałbym, aby każdy commit, który jest obecnie przypisany Mike ' owi, zmieniał się na msmith, aż do wersji 1.
Moja pierwsza myśl jest taka, że będę musiał wykonać parsowanie i przetwarzanie na pliku zrzutu, ale narzędzie byłoby miłe.
7 answers
Możesz użyć svndumptool :
Svnadmin dump path/to/my/repo > repo.dump
Svndumptool transform-revprop svn: author originalregexp newvalue repo.wyrzuć newrepo.dump
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-27 16:48:44
TortoiseSVN ma doskonałe wsparcie dla tej funkcjonalności: w swoim oknie dialogowym Revision Log można filtrować według autora (nawet za pomocą wyrażeń regularnych), wybrać wersje z filtrowanej listy zgodnie z życzeniem (Zwykle Wszystkie, jak w tym pytaniu) i wybrać "Edytuj autora" z menu kontekstowego.
Warunek wstępny posiadania Pre-revprop-change hook w miejscu, jak wspomniano w jeroenhs odpowiedź nadal obowiązuje, oczywiście.
Przetwarzanie jest raczej powolne, ale w zależności od potrzeb może to nadal być dużo szybsze i / lub wygodniejsze niż zrzut całego repozytorium i przetworzenie tych potencjalnie ogromnych plików zrzutu za pomocą skryptów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:41
Tak jest:
svn propset --revprop -r revision_number svn:author new_username
Jednak svn domyślnie nie zezwala na zmianę właściwości rewizji. W tym celu należy skonfigurować skrypt Hooka pre-revprop-change. W systemie windows wystarczy umieścić plik bat w folderze hooks w repozytorium, który zawiera po prostu jedną linię:
exit 0
Jeśli to jest skonfigurowane, powinieneś być w stanie napisać skrypt dla swoich potrzeb.
Edit: nie testowałem tego, ale myślę, że to powinno zadziałać w PowerShell:([xml] ( svn log --xml )).log.logentry
| ? {$_.author -eq "Mike"}
| foreach {svn propset --revprop -r $_.revision svn:author msmith}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-28 19:54:04
Na serwerze repozytorium Możesz:
echo -n "msmith" > msmith.txt
svn log /svn -q | grep Mike | cut -f 1 -d' ' | xargs -n1 svnadmin setrevprop /svn svn:author msmith.txt -r
Oto co to robi:
- Zapisz nową nazwę użytkownika w pliku bez nowej linii na końcu (echo-n)
- Pobierz pełny dziennik dla repozytorium w /svn, wyświetlając tylko informacje podsumowujące (Nie wiadomość dziennika) (SVN log-q)
- Znajdź linie z Mike (grep)
- Filtruj wszystko z wyjątkiem pierwszego pola (rewizja#) (Wytnij)
- Uruchom polecenie svnadmin przy każdej rewizji znalezionej w kroku 4 (xargs). Only pass jedna zmiana na wykonanie polecenia (- n1). To zastąpi właściwość svn: author zawartością msmith.plik txt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 20:43:42
W Thunder Below , historii USS Barb w ii wojnie światowej, na pokładzie pojawia się nowy oficer. Kapitan pyta go jak się nazywa. "Mike", odpowiada. "Nie, mamy już Mikrofon", mówi kapitan. "Będziemy cię nazywać Robert. W walce, kiedy wydaję rozkazy, nie ma wątpliwości, z kim rozmawiam."
Chodzi mi o to, że istnieje precedens, aby Twój nowy Mike wybrał inne imię.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-28 17:22:37
Zajęło mi to sporo czasu, ale w końcu znalazłem skrypt Perla, który działa na pliku zrzutu SVN.
Próbowałem go dziś rano na wysypisku mojego repozytorium i działało bez zarzutu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-29 13:20:15
Z pamięci, standardową odpowiedzią SVN na zmianę czegokolwiek w historii jest zrobienie zrzutu tekstowego bazy danych, przeszukiwanie-Zamiana przez nią i ponowne utworzenie z niej bazy danych.
Ale tak naprawdę nie spojrzałem na wewnętrzne SVN od czasu jego 0.X-dni, więc mogę już iść...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-28 16:55:09