Tags Posts tagged with "commit"

commit

przez -
12 953
SVN

W środowisku, w którym pracuje wielu programistów, komentowanie kodu jest wręcz wymogiem. Ale jak wiadomo wielu twórców oprogramowania unika dodawania komentarzy, a tym bardziej komentowania commitów w systemie kontroli wersji. Ale jest na to sposób by wymusić dodawanie komentarzy do każdego commita.

Na serwerze gdzie jest usługa SVN w katalogu danego repozytorium znajduje się katalog hooks. Znajdziemy tam pliki *.tmpl o nazwach, które sugerują swoje działanie. Są to pliki szablonowe, z których możemy przygotować gotowe skrypty.

Takim skryptem będzie pre-commit. Jak sama nazwa wskazuje, wykona się on przed każdym poleceniem COMMIT, sprawdzi czy programista dodał komentarz i jeśli nie to zwrócić błąd w stronę klienta.

Na samym początku musimy stworzyć taki skrypt. Posłuży nam do tego szablon pre-commit.tmpl.

cp /var/svn/repozytorium/hooks/pre-commit.tmpl /var/svn/repozytorium/hooks/pre-commit
chmod +x /var/svn/repozytorium/hooks/pre-commit

W skopiowanym pliku powinniśmy zakomentować linię dodając # na jej początku:

#commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

Jeżeli chcemy, aby został wysłany do użytkownika odpowiedni komunikat możemy cały skrypt zastąpić poniższym kodem:

REPOS="$1"
TXN="$2"

# Make sure that the log message contains some text.
SVNLOOK=/usr/local/bin/svnlook

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 1 ]; then
        echo -e "Dodaj komentarz do swojego commita!" 1>&2
        exit 1
fi

# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
#commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

# All checks passed, so allow the commit.
exit 0

Jeżeli wszystko dobrze wykonaliśmy, próba dodania commita bez komentarza zakończy się błędem:

Zatwierdzenie nie powiodło się (szczegóły poniżej):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
Dodaj komentarz do swojego commita!

Natomiast jeżeli zobaczymy błąd Error output could not be translated from the native locale to UTF-8, należy sprawdzić czy w pliku pre-commit nie dodaliśmy jakiś znaków specjalnych, które powodują problem.

Polecane

Jesień Linuksowa

1 1174
Polska Grupa Użytkowników Linuksa ma zaszczyt zaprosić na konferencję Jesień Linuksowa 2017, która odbędzie się w dniach 22 – 24 września 2017 roku. Jako...