3

Как проверить, что файл / папка уже зафиксированы в SVN? У меня есть сценарий оболочки, в котором я хочу убедиться, что файл / папка, выбранные пользователем для регистрации, еще не зафиксированы. Например, если я пытаюсь зарегистрировать папку, которая уже зафиксирована с использованием

SVN добавить мою папку

Я получаю следующее предупреждение:

svn: warning: myfolder уже находится под контролем версий

3 ответа3

5

Используйте код возврата svn info . Это 0 если под контролем версий, ненулевое в противном случае.

Моя оболочка отображает ненулевые коды возврата после команды, поэтому она выглядит так:

$ svn info trunk
Path: trunk
URL: https://(...)/trunk
Repository Root: https://(...)
Repository UUID: 651713a4-5a46-7e42-a99e-f31e79777eab
Revision: 213
Node Kind: directory
(...)

$ touch foo
$ svn info foo 
foo:  (Not a versioned resource)

svn: A problem occurred; see other errors for details

rc: 1

Как бы вы сделали это в скрипте bash (аналогично другим оболочкам) с подавлением вывода info :

svn info <filename> 1>/dev/null 2>&1
echo $?
1

Я использую это:

if [ $(svn status $file | awk '{ print $1 }') == "?" ]; then
    echo "File is not under version control"
fi

Таким образом, вы также можете запросить различные коды состояния SVN, которые можно увидеть здесь: http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.status.html

0

Я хотел решить аналогичную проблему: как часть скрипта, который сгенерировал файл, автоматически добавьте его в Subversion, если это не было сделано ранее.

Я нашел следующее работало:

if ! svn info ${file} 1>/dev/null 2>&1 ; then
  svn add ${file}
fi

Тестирование выходных значений в Bash привело меня к этому ответу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .