Jak wyedytować zapisane komentarze w commit logach subversion?

Czasami w wypadku administracji repozytorium subversion w wyniku błedu kogoś (najczęściej programisty;) zachodzi konieczność modyfikacji zapisanej podczas commitu treści logu - komentarza. Przedstawię dwa najczęściej wykorzystywane (znane mi sposoby)...

Umożliwienie modyfikacji właściwości zapisanej rewizji w subversion

Z tego co się orientuję właściwości danej wersji/rewizji w svn same w sobie nie są w żaden sposób wersjonowane - jest tylko jedna wersja właściwości w rewizji. Domyślnie konfiguracja subversion blokuje możliwość modyfikacji tychże właściwości. Żeby to zmienić konieczne jest dodanie hooka pre-revprop-change - skryptu svn. Poniżej znajdziecie taki skrypt umożliwiający zmianę właściwości między innymi svn:log. Tak naprawdę umożliwienie zmian sprowadza się do zwrócenia przez tenże skrypt odpowiedniej wartości wyjściowej (exit status). Jeżeli chcemy umożliwić modyfikację wykonywany skrypt musi zwrócić wartość 0, a jeżeli chcemy zabronić - wartośc 1 (podejrzewam, że każdą różną od 0 ale nie sprawdzałem). Skrypt umieszczamy w domyślnym katalogu ze skryptami svn - w większości dystrybucji jest to katalog /var/lib/svn/hooks

(zawartość pliku pre-revprop-change)
#!/bin/sh
REPOS="$1"
REV="$2" USER="$3"
PROPNAME="$4"
ACTION="$5"
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then
   echo "$1 $2 $3 $4 $5" >> /var/lib/svn/logchanges.log
  exit 0;
fi
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

Po wykonaniu tego kroku możliwa jest zmiana komentarzy w repozytorium. Zmiany te wykonujemy za pomocą komendy svn propset:
 

svn propset --revprop -r N svn:log "Zmodyfikowany komentarz."
property 'svn:log' set on repository revision 'N'

gdzie N jest interesującym nas numerem rewizji

Zmiana za pomocą komendy svnadmin

Jeśli masz uprawnienia administracyjne na serwerze z subversion (dostęp do konsoli), komentarze można zmienić w ten sposób:
 

svnadmin setlog --bypass-hooks REPOS_PATH -r N FILE


gdzie REPOS_PATH to ścieżka do repozytorium na systemie plików, N - jak poprzednio numer rewizji, a FILE to plik z nowym tekstem komentarza.

Komentarz