Makefile规则检查svnversion结果

时间:2009-12-09 03:02:34

标签: svn makefile sed

尝试制作一个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

然而,这两种情况似乎都会引发这种情况。

3 个答案:

答案 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