как я узнаю, что моя рабочая копия не синхронизирована - PullRequest
5 голосов
/ 29 июня 2011

Мы храним изображение текущего кода выпуска в некотором локальном каталоге, и для построения кода мы используем код в этом каталоге.В сценарии сборки мне нужен способ выяснить, синхронизируется ли код в каталоге изображений с текущей веткой выпуска в репозитории.Если это так, я сделаю обновление SVN из скрипта.Можно ли каким-либо образом использовать номера ревизий для обнаружения несинхронного состояния?Если так, то как?

Вадирадж

Ответы [ 2 ]

12 голосов
/ 29 июня 2011
svn status -u

добавляет рабочую ревизию и устаревшую информацию о сервере.

Если в каталоге нет файлов без версий, это актуально только в том случае, если команда status ничего не возвращает. В противном случае * означает, что это не актуально,? означает не версированный, M - модифицированный и т. д.

Другими словами, это актуально, если и только если следующее возвращает 0:

svn status -u | grep -E -c "^\s+[^\?]"
0 голосов
/ 06 сентября 2018

Быстрый и прямой путь:

repoVersion="$(svn status -u --depth empty <myWCdir> | awk '{print $NF}')"
wcVersion="$(svn info --show-item revision <myWCdir>)"

Затем вы можете просто сравнить эти два числа, как в:

if [[ $repoVersion -eq $wcVersion ]]; then
    echo "<myWCdir> is up to date"
else
    echo "<myWCdir> is out of date"
fi

Примечание: Обычный svn status -u - это слишком много.SVN поднимает число оборотов dir, если изменяется любое содержимое (на любой глубине).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...