Принятый ответ не будет работать, если ваш проект содержит svn:externals
ссылок.В этом случае svn status -q
будет по-прежнему выводить данные, даже если рабочая копия не имеет локальных изменений.Например, мой проект зависит от нескольких библиотек, каждая из которых поддерживается в отдельной части хранилища:
$ svn status -q
X Externals/ETCKit
X Externals/RulesParser
X Externals/XMLRPC
Performing status on external item at 'Externals/ETCKit':
Performing status on external item at 'Externals/XMLRPC':
Performing status on external item at 'Externals/RulesParser':
Чтобы учесть этот дополнительный вывод, я использовал awk
:
if [[ -n $(svn status -q . | awk '$1 ~ /[!?ABCDGKLMORST]/') ]]; then
echo "The working copy at $(pwd) appears to have local modifications"
fi
Этот скрипт принимает вывод svn status -q
и отфильтровывает все строки, которые не начинаются с кода состояния, указывающего локальное изменение.Если конечным результатом является пустая строка, то рабочая копия чистая.