Czy istnieje sposób na edycję komunikatu dziennika określonej wersji w Subversion? Przypadkowo napisałem niepoprawną nazwę pliku w komunikacie zatwierdzenia, co może być mylące później.
Widziałem, jak edytować niepoprawną wiadomość zatwierdzenia w Git? , ale rozwiązanie tego pytania nie wydaje się być podobne w przypadku Subversion (zgodnie z svn help commit
).
pre-revprop-change
skrypt, który pozwala zatwierdzającemu użytkownikowi modyfikować swój dziennik do 3 godzin po zatwierdzeniu. Jest to doskonały kompromis między elastycznością / dokładnymi logami a utrzymaniem wierności repozytorium: wandisco.com/svnforum/threads/…svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Odpowiedzi:
Zasadniczo musisz mieć uprawnienia administratora (bezpośrednio lub pośrednio) do repozytorium, aby to zrobić. Możesz albo skonfigurować repozytorium, aby wszyscy użytkownicy mogli to zrobić, albo zmodyfikować komunikat dziennika bezpośrednio na serwerze.
Zobacz tę część z Subversion FAQ (podkreślenie moje):
źródło
Po uruchomieniu tego polecenia
i na wszelki wypadek zobaczysz ten komunikat:
Jest tak, ponieważ Subversion nie pozwala na modyfikowanie komunikatów w dzienniku, ponieważ są one niewersjonowane i zostaną trwale utracone.
SVN hostowany w systemie Unix
Przejdź do katalogu hooks na serwerze Subversion (zamień ~ / svn / reponame na katalog swojego repozytorium)
Usuń rozszerzenie
Spraw, by był wykonywalny (nie można zrobić chmod + x!)
Źródło
Hostowana przez Windows SVN
Pliki szablonów w katalogu hooks nie mogą być używane, ponieważ są one specyficzne dla Uniksa. Musisz skopiować plik wsadowy systemu Windows
pre-revprop-change.bat
do katalogu hooks, np . Tutaj podanego .źródło
Oto przydatna odmiana, o której nie widzę w często zadawanych pytaniach. Możesz zwrócić bieżącą wiadomość do edycji, określając edytor tekstu.
źródło
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
źródło
Niedawno mi to również powierzono.
Chcieliśmy umożliwić naszym programistom modyfikowanie tylko własnych komunikatów zatwierdzania i ograniczyć, jak daleko mogą to robić. Zdecydowaliśmy, że będą mogli modyfikować wszelkie komunikaty dziennika zatwierdzone tego dnia, naprawić literówki itp.
Po zapoznaniu się z kilkoma innymi przykładami online zhackowałem to razem, jesteśmy w środowisku Windows, więc oto nasza zawartość
pre-revprop-change.bat
:Edycja: oryginalny pomysł na to pochodzi z tego wątku :
źródło
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
musiałem przejść do podwójnych cudzysłowów wokół dwóch zmiennych. (Nie uwierzyłbyś, ile czasu to zajęło.) W przeciwnym razie dostałbym takie rzeczy, że „== '02' jest w tej chwili nieoczekiwany” (drugiego dnia miesiąca). Moja partia-fu nie jest wystarczająco silna, aby wiedzieć, dlaczego tak się dzieje, ale na wypadek, gdyby ktoś napotkał dziwne problemy, może to pomóc.W systemie Windows za pomocą klienta Tortoise SVN:
Jeśli to nie działa, może to wynikać ze sposobu konfiguracji SVN na serwerze, przeczytaj inne odpowiedzi tutaj.
źródło
Jeśli używasz środowiska IDE, takiego jak eclipse, możesz skorzystać z tej prostej metody.
W takim
right click on the revision id for your commit and select 'Set commit properties'
.Tutaj możesz zmodyfikować wiadomość, jak chcesz.
źródło
Jeśli Twoje repozytorium umożliwia ustawienie właściwości rewizji za pomocą haka przed zmianą propozycji, możesz znacznie łatwiej zmieniać komunikaty dziennika.
Lub w TortoiseSVN, AnkhSVN i prawdopodobnie wielu innych klientach subversion, klikając prawym przyciskiem myszy wpis dziennika, a następnie „zmień komunikat dziennika”.
źródło
Subversion FAQ Obejmuje to, ale wykorzystuje kilka mylące niezdefiniowanych pojęć jak
REPOS_PATH
bez podania rzeczywistych przykładów.Może to potrwać kilka prób, aby go uruchomić, więc zapisz zaktualizowaną wiadomość zatwierdzenia w pliku. W przeciwieństwie do
svn-commit.tmp
plików, Subversion nie zachowa twojego pisania, jeśli wystąpi problem.W katalogu roboczym uruchom
svn propedit -r N --revprop svn:log
aby edytować komunikat zatwierdzenia. Jeśli to zadziała, świetnie! Ale prawdopodobnie tak się nie stanie, ponieważ
svn:log
właściwość rewizji jest niewersjonowana, a Subversion domyślnie powstrzyma cię przed nadpisaniem, albo za pomocą skryptu przechwytującegopre-revprop-change
, albo komunikatu błędu, że nie masz takiego przechwytywania.Aby zmienić zaczepy, potrzebujesz dostępu do systemu plików, na którym znajduje się repozytorium.
svn info
poinformuje o katalogu głównym repozytorium. Załóżmy, że tak~/svnrepo
.cd
do~/svnrepo/hooks
pre-revprop-change
lubpre-revprop-change.bat
skrypt? Jeśli tak, tymczasowo skomentuj część przerywającą, jeśli spróbujesz zmienićsvn:log
.W przeciwnym razie w systemie Windows utwórz pusty plik o nazwie
pre-revprop-change.bat
. Oto jeden ze sposobów, aby to zrobić:W przeciwnym razie w systemie Unix uruchom
W kopii roboczej uruchom
svn propedit -r N --revprop svn:log
ponownie~/svnrepo/hooks/svn-revprop-change
(.bat
)źródło
Na stronie svnforum znalazłem fajną implementację haka przed zmianą-prop-zmiany po stronie serwera: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contribution/8571-pre-revprop-change -shell-script-pozwala-zatwierdzającym-zmienić-własny-log-w ciągu x godzin
Implementuje
Chwyć go stamtąd i edytuj do woli. Wolałbym nie kopiować go tutaj, ponieważ nie jestem oryginalnym autorem i nie ma informacji o prawach autorskich, która pozwoliłaby mi to zrobić.
źródło