2015-10-28 22 views
0

我有目標,以顯示其工作拷貝我刪除函關的SVN版本號結束

<target name="svnversion"> 
     <exec executable="svnversion" outputproperty="svnversion" /> 
     <echo message="SVN Version: ${svnversion}" /> 
    </target> 

我想它沒有M或在最後一個S返回的數量,不管不管是不是這樣,所以如果上面的輸出是:17349M,我希望它返回17349。我曾嘗試this answer on a different SE。然而,我認爲,即使這樣做確實有效,在M或S不存在的情況下,也會減少最終數量。

回答

3
  1. 你一定要記住輸出的所有可能的版本:它不僅僅是尾隨「M」或「S」更多。從svnversion,如果幫助
If the working copy is unusual the version identifier will be more complex: 

    4123:4168  mixed revision working copy 
    4168M   modified working copy 
    4123S   switched working copy 
    4123P   partial working copy, from a sparse checkout 
    4123:4168MS mixed revision, modified, switched working copy 

,你必須處理所有形式的

  • 技術上,管道到grep將允許你檢測,其類型您的WC有

  • 畢竟,請閱讀aboutsed這將允許您執行任何需要轉型,如果你能夠描述它

  • 0

    <outputfilterchain>可以捕獲<exec>任務的輸出,轉換輸出,並且將結果保存到一個屬性。例如...

    <fail unless="wc.dir"/> 
    <exec executable="svnversion" outputproperty="my-svnversion" failonerror="true"> 
        <redirector> 
         <outputfilterchain> 
          <tokenfilter> 
           <replaceregex pattern="^(\d+)[MS]$" replace="\1"/> 
          </tokenfilter> 
         </outputfilterchain> 
        </redirector> 
        <arg value="${wc.dir}"/> 
    </exec> 
    
    <echo>my-svnversion: ${my-svnversion}</echo> 
    

    爲了測試這個腳本,我創建了一個修改過的文件的SVN工作副本...

    $ svn st 
    M  test.txt 
    

    ...和驗證什麼svnversion,如果通常返回...

    $ svnversion 
    1M 
    

    運行Ant腳本後報...

    run: 
        [echo] my-svnversion: 1 
    

    請注意,此腳本不處理Lazy Badger答覆中提到的「混合版本工作副本」,「混合修訂,修改,切換的工作副本」或「稀疏檢出的部分工作副本」。