2017-01-25 19 views
0

Мы готовимся к переходу с SVN на GIT. Все наши проекты (каждая из которых имеет филиалы, теги и т. Д.) Находятся под одним хранилищем. Во время миграции мы хотели бы сделать некоторые проекты доступными только для чтения. Можно ли написать привязку фиксации SVN, которая проверяет, были ли файлы изменены по определенному пути?SVN: Можно ли предотвратить фиксацию по определенному пути?

Решение:

#!/bin/sh 

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

SVNLOOK=/opt/local/bin/svnlook 

# Committing to migrated projects to GIT is not allowed 
$SVNLOOK changed -t "$TXN" "$REPOS" | grep "\/some_path\/" && /bin/echo "This repository is read-only due to migration to GIT. Please commit to GIT repo instead!" 1>&2 && exit 1 

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

ответ

1

Да, это легко возможно.

В крючке pre-commit вы получаете путь к репо и имя транзакции в качестве параметров. Затем вы можете использовать svnlook changed -t <transaction> <repo path>, чтобы получить список затронутых путей и провалить крючок, если обновляется путь только для чтения.