尝试制作一个makefile规则来检查svnversion是否给出了正确的结果。
通常情况下,它应该返回以下内容之一:
1023:1055M
1056
但是,它可能会出现如下错误:
svn: This client is too old to work with working copy '.'; please get a newer Subversion client
所以这是我基于其他帖子的规则版本:
test2:
@if [ $$(svnversion | sed s/[0-9:M]*//g | grep '.') -neq ""]; \
then \
echo >&2 "Unexpected result from 'svnversion'" \
"of $$(svnversion)"; \
false; \
fi
然而,这两种情况似乎都会引发这种情况。
答案 0 :(得分:1)
您看到的错误告诉我们'svnversion'命令来自另一个较小的Subversion版本,而不是您用来更新工作副本的客户端。
E.g。当您使用基于Subversion 1.6.6的TortoiseSVN和Subversion 1.5.6命令行客户端时会发生这种情况。
答案 1 :(得分:0)
@if ! $(subversion) | grep -qE "[0-9]+:[0-9]+M"; then
答案 2 :(得分:0)
以下是我最终解决这个问题的方法:
test_svnversion_output:
@if [ $$(svnversion 2>&- | wc | awk '{print $$1}') -eq 0 ]; \
then \
echo >&2 "Error: 'svnversion' produced bad result" \
"'$$(svnversion 2>&1)'."; \
false; \
fi