svnadmin verify 验证失败时的退出代码是否为 1?
Does svnadmin verify have an exit code of 1 on failure to verify?
我正在编写一个脚本 运行 定期(可能每天)验证我们所有的回购协议。我正在 运行 使用 -q 选项(安静)对其进行调试,并且我正在尝试弄清楚如何检测验证是否成功。文档中没有关于退出代码的内容,也没有关于失败时输出的内容。这是脚本:
#!/bin/bash
SVN_ROOT=#root directory for repositories#
for name in $SVN_ROOT/*;
do
start_time=`date +%s`
REPO_NAME=$(basename $name);
echo "--------------------"
echo "Verifying $REPO_NAME"
svnadmin verify $name -q
end_time=`date +%s`
run_time=$((end_time-start_time))
echo "Verification took $run_time seconds"
echo "--------------------"
echo
done
我们可以简单地检查 svnadmin verify
命令的退出代码吗?
如果验证成功,您将不会得到任何输出。因此,请检查一下,终端上不应写入任何内容,否则不会返回任何内容。
现在失败可以是任何东西。但它总是以
开头
* Error verifying repository metadata.
svnadmin:
我经常遇到的是
看起来像这样:
* Error verifying repository metadata.
svnadmin: E160006: No such revision 2
* Error verifying repository metadata.
svnadmin: E200014: L2P index checksum mismatch in file common-model_error/db/rev
s/0/2:
expected: 889bad2c5c202537b7cba500084dce5a
actual: 1858b46dd6554ef73bf8e0076e490802
您可以从文件 svnadmin_tests.py
的 svn 源代码中获取完整信息。
是的,您可以检查return命令代码。
例如,如果缺少修订文件:
svnadmin verify ./fail-test/ > test.log
* Error verifying repository metadata.
svnadmin: E160006: No such revision 16
echo $? # -> 1
在有效的回购上:
svnadmin verify ./ok-repo/ > test.log
echo $? # -> 0
您可以测试 $?
或将其保存到变量中。
其他方法是将 stderr 重定向到一个文件并稍后检查其大小。
# this could be a loop
svnadmin verify fail-test > >(tee -a fail-test.out.log) 2> >(tee -a fail-test.err.log >&2)
svnadmin verify ok-repo > >(tee -a ok-repo.out.log) 2> >(tee -a ok-repo.err.log >&2)
# ...
# check size of errors
ls -l *.err.log
我正在编写一个脚本 运行 定期(可能每天)验证我们所有的回购协议。我正在 运行 使用 -q 选项(安静)对其进行调试,并且我正在尝试弄清楚如何检测验证是否成功。文档中没有关于退出代码的内容,也没有关于失败时输出的内容。这是脚本:
#!/bin/bash
SVN_ROOT=#root directory for repositories#
for name in $SVN_ROOT/*;
do
start_time=`date +%s`
REPO_NAME=$(basename $name);
echo "--------------------"
echo "Verifying $REPO_NAME"
svnadmin verify $name -q
end_time=`date +%s`
run_time=$((end_time-start_time))
echo "Verification took $run_time seconds"
echo "--------------------"
echo
done
我们可以简单地检查 svnadmin verify
命令的退出代码吗?
如果验证成功,您将不会得到任何输出。因此,请检查一下,终端上不应写入任何内容,否则不会返回任何内容。
现在失败可以是任何东西。但它总是以
开头* Error verifying repository metadata.
svnadmin:
我经常遇到的是 看起来像这样:
* Error verifying repository metadata.
svnadmin: E160006: No such revision 2
* Error verifying repository metadata.
svnadmin: E200014: L2P index checksum mismatch in file common-model_error/db/rev
s/0/2:
expected: 889bad2c5c202537b7cba500084dce5a
actual: 1858b46dd6554ef73bf8e0076e490802
您可以从文件 svnadmin_tests.py
的 svn 源代码中获取完整信息。
是的,您可以检查return命令代码。
例如,如果缺少修订文件:
svnadmin verify ./fail-test/ > test.log
* Error verifying repository metadata.
svnadmin: E160006: No such revision 16
echo $? # -> 1
在有效的回购上:
svnadmin verify ./ok-repo/ > test.log
echo $? # -> 0
您可以测试 $?
或将其保存到变量中。
其他方法是将 stderr 重定向到一个文件并稍后检查其大小。
# this could be a loop
svnadmin verify fail-test > >(tee -a fail-test.out.log) 2> >(tee -a fail-test.err.log >&2)
svnadmin verify ok-repo > >(tee -a ok-repo.out.log) 2> >(tee -a ok-repo.err.log >&2)
# ...
# check size of errors
ls -l *.err.log