Nie mogłem znaleźć przykładu, jak sprawdzić właściwość svn: eol-style dla kodu źródłowego bezpośrednio w skrypcie przechwytywania przed zatwierdzeniem. Najbliżej znajduje się check-mime-type.pl, który wykorzystuje właściwości typu MIME do określenia, czy plik jest plikiem tekstowym.
Następujący skrypt wstawiony do pliku skryptu przed zatwierdzeniem sprawdzi, czy wszystkie pliki .cpp/.h dodane w zatwierdzeniu mają ustawioną właściwość svn: eol-style. (Można go łatwo rozszerzyć, aby sprawdzić dodatkowe rozszerzenia plików). Dostarczy również komunikaty wskazujące, które pliki nie mają właściwości svn: eol-style.
REPOS="$1"
TXN="$2"
# Get new cpp/h files
ADDFILES=$(${SVNLOOK} changed "$REPOS" -t "$TXN" | sed -n -e '/^A.*\(\.cpp\|\.h\)$/s/^A *//p')
#echo "ADDFILES=$ADDFILES" >&2
# Check files for svn:eol-style property
ESMISSING=''
for f in ${ADDFILES}
do
if [[ "$(${SVNLOOK} pl ${REPOS} -t ${TXN} ${f})" != *svn:eol-style* ]]
then
# output to stderr to include message in svn commit ouput
echo "No svn:eol-style property set on file $f" >&2
ESMISSING=1
fi
done
if [[ -n "$ESMISSING" ]]
then
exit 1
fi
Interesujące. Dzięki za link. Wygląda na to, że jest to właściwy sposób: "Zamiast próbować modyfikować transakcję, lepiej sprawdzić transakcję w haku poprzedzającym zatwierdzenie i odrzucić zatwierdzenie, jeśli nie spełnia ona pożądanych wymagań." – Bart
Nieaktualna odpowiedź. – bahrep
Dlaczego jest to nieaktualne? –