Перечисленные ответы великолепны, но никто не сделал именно то, что мне нужно. Я хочу позволить легко создавать теги, но после их создания они должны быть полностью доступны только для чтения.
Я также хочу предотвратить глупую ситуацию, когда, если вы сделаете это:
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