2009-12-09 69 views
0

嘗試make makefile規則來檢查svnversion是否給出了正確的結果。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

了SH片段可以降低到簡單:如果$(svnversion,如果)| sed s/[0-9:M] * // g | grep。 ;然後...(不受保護) 不需要調用測試(或[]。 – 2009-12-09 08:31:31

+0

基於其他職位?如果它不起作用,那麼爲什麼不在其他帖子中解決問題,而不是開始新的問題? – Beta 2009-12-09 16:07:19

+0

其他人已經解決和工作,這是一個新的變種。 – WilliamKF 2009-12-10 02:28:53

回答

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 
1

您看到的錯誤告訴您'svnversion'命令來自另一個次要的Subversion版本,而不是您用來更新工作副本的客戶端。

E.g.當你在Subversion 1.5.6命令行客戶端中使用基於Subversion 1.6.6的TortoiseSVN時會發生這種情況。

+0

這不是在這個問題中要求什麼。 – WilliamKF 2009-12-10 04:32:38

0
@if ! $(subversion) | grep -qE "[0-9]+:[0-9]+M"; then 
+0

這對我不起作用。 – WilliamKF 2009-12-10 04:31:57

+2

請注意,svnversion也可以在其結果中使用S和P,或者使用這些字母的任意組合。 – 2009-12-10 10:20:48