Хук предварительной фиксации SVN для избежания изменений в подкаталогах тегов - PullRequest
38 голосов
/ 21 января 2009

Есть ли кто-нибудь, у кого есть четкие инструкции о том, как добавить ловушку предварительной фиксации, чтобы избежать изменений в подкаталогах тегов?

Я уже немного искал в интернете. Я нашел эту ссылку: SVN :: Hooks :: DenyChanges , но я не могу что-то скомпилировать.

Ответы [ 11 ]

0 голосов
/ 18 декабря 2015

Перечисленные ответы великолепны, но никто не сделал именно то, что мне нужно. Я хочу позволить легко создавать теги, но после их создания они должны быть полностью доступны только для чтения.

Я также хочу предотвратить глупую ситуацию, когда, если вы сделаете это:

svn copy myrepo/trunk myrepo/tags/newrelease

Все хорошо с первого раза. Но во второй раз, если тег уже существует, вы получите myrepo/tags/newrelease/trunk.

Моя ловушка предварительной фиксации будет искать любой существующий каталог SVN, соответствующий (repo)/tags/(tag)/, и завершится ошибкой, если он найден:

$SVNLOOK tree -N --full-paths "$REPOS" "`$SVNLOOK changed -t "$TXN" "$REPOS" \
  | sed 's/[A-Z][[:space:]]*\([^/]*\)\/tags\/\([^/]*\)\/.*/\1\/tags\/\2\//' \
  | head -n 1`" \
  && echo "Tag already exists, commit rejected." >&2 \
  && exit 1
...