Chciałem edytować komentarz dziennika w przeglądarce repozytorium i otrzymałem komunikat o błędzie, że dla repozytorium nie istnieje hak przed zmianą proponu. Oprócz posiadania przerażającej nazwy, czym jest hak przed zmianą obrotów i jak go utworzyć?
168
Odpowiedzi:
Zasadniczo jest to skrypt uruchamiany przed modyfikacją niewersjonowanej właściwości w repozytorium, dzięki czemu można dokładniej zarządzać tym, co dzieje się w repozytorium.
W dystrybucji SVN znajdują się szablony dla różnych hooków, zlokalizowane w podkatalogu / hooks (* .tmpl, które musisz edytować i zmieniać nazwę w zależności od systemu operacyjnego, aby aktywować).
źródło
svnsync
lustrzanego, to domyślny skrypt będzie musiał zostać zmieniony, ponieważ zezwala tylko na zmiany w svn: log. Svnsync zmienia się bardziej niż to, więc po prostu wstawiamexit 0
tam, aby zezwolić na wszystkie zmiany właściwości (ponieważ jest to kopia lustrzana tylko dla mnie).pre-revprop-change
tym samym katalogu i uczyń wykonywalnym dla użytkownika serwera WWW (w systemie Linux).W przypadku systemu Windows jest łącze do przykładowego pliku wsadowego, który zezwala tylko na zmiany w komunikacie dziennika (a nie innych właściwościach):
http://ayria.livejournal.com/33438.html
Zasadniczo skopiuj poniższy kod do pliku tekstowego, nazwij go
pre-revprop-change.bat
i zapisz w\hooks
podkatalogu swojego repozytorium.źródło
W systemie Linux, aby zezwolić na edycję komentarza dziennika,
pre-revprop-change.tmpl
whooks
katalogu swojego repozytoriumpre-revprop-change
www-data
)Edytowano: (dzięki Lindes)
0
zajść potrzeba edycji skryptu, aby zwrócić wartość wyjścia dla rodzaju edycji, na które chcesz zezwolić.źródło
Tutaj jest łącze do pytania o przepełnienie stosu z wieloma popularnymi punktami zaczepienia Typowe typy zaczepów Subversion , w tym oryginalne źródło przechwycenia
pre-revprop-change
dla systemu Windows zamieszczone tutaj.Powinieneś tam odnieść się, ponieważ z czasem mogą ulec poprawie.
źródło
Dzięki #patmortech
I dodałem Twój kod, który „tylko ten sam użytkownik może zmienić swój kod”.
źródło
Nazwa skryptu przechwytującego nie jest tak przerażająca, jeśli uda ci się go odszyfrować: jest to punkt zaczepienia zmiany właściwości przed rewizją . Krótko mówiąc, celem
pre-revprop-change
skryptu przechwytującego jest kontrolowanie zmian niewersjonowanych (rewizji) właściwości i wysyłanie powiadomień (np. Wysyłanie wiadomości e-mail w przypadku zmiany właściwości wersji).Istnieją 2 typy właściwości w Subversion:
svn:needs-lock
isvn:mime-type
), które można ustawić w plikach i katalogach,svn:log
isvn:date
), które są ustawiane dla wersji repozytorium .Wersjonowane właściwości mają historię i mogą być manipulowane przez zwykłych użytkowników, którzy mają dostęp do odczytu / zapisu w repozytorium. Z drugiej strony, niewersjonowane nieruchomości nie mają historii i służą głównie do celów konserwacyjnych. Na przykład, jeśli zatwierdzisz wersję, otrzyma ona natychmiast
svn:date
czas UTC zatwierdzenia,svn:author
twoją nazwę użytkownika isvn:log
wiadomość dziennika zmian (jeśli ją podałeś).Jak już wspomniałem, celem
pre-revprop-change
skryptu przechwytującego jest kontrolowanie zmian właściwości wersji. Nie chcesz, aby każdy, kto ma dostęp do repozytorium, mógł modyfikować wszystkie właściwości wersji, więc zmiana właściwości wersji jest domyślnie zabroniona. Aby umożliwić użytkownikom zmianę właściwości, musisz utworzyćpre-revprop-change
punkt zaczepienia.Najprostszym hak może zawierać tylko jedną linię:
exit 0
. Pozwoli to każdemu uwierzytelnionemu użytkownikowi na zmianę dowolnej właściwości wersji i nie powinno być używane w rzeczywistym środowisku. W systemie Windows można użyć skryptu wsadowego lub skryptu opartego na programie PowerShell, aby zaimplementować pewną logikę wpre-revprop-change
podpięciu.Ten skrypt programu PowerShell umożliwia
svn:log
tylko zmianę właściwości i odrzuca puste komunikaty dziennika.Ten skrypt wsadowy pozwala tylko użytkownikowi „svnmgr” na zmianę właściwości wersji:
źródło
Dla użytkowników komputerów PC: rozszerzenie .bat nie działało, gdy było używane w systemie Windows Server. Użyłem VisualSvn, jak zasugerował Django Reinhardt, i stworzyłem hook z rozszerzeniem .cmd.
źródło
(To rozwiązanie z pewnością ma wady, ponieważ nic nie jest sprawdzane / zabronione. Ale w moim przypadku - lokalne repozytorium, z którego tylko ja korzystam - wydaje się działać.)
źródło