-1

バージョン番号の 4 桁目に SVN リビジョン番号を使用したいと考えています。Visual Build では、私のバージョン番号は次のように定義されています

%MAJOR%.%MINOR%.%BUILD%.%REVISION%

SVN から %REVISION% 変数を設定したいと思います。

Visual Buildでそれを達成するにはどうすればよいですか?

4

2 に答える 2

2

まさにこれのためのsvnコマンドラインツールにコマンドがあります:

svnversion [path_to_workingcopy]

作業コピーの現在のリビジョン番号 (arg が省略されている場合は現在のディレクトリ) を返します。作業コピーが変更、混合、またはスパース チェックアウトされている場合、これも出力されます。--help cmd-switch で入手できるドキュメントからの抜粋:

   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

したがって、ビルドスクリプトで svnversion を呼び出すだけで、出力を処理するか、ファイルに入れてこのファイルを読み取ることができます。

于 2016-09-14T11:11:38.517 に答える
2

オプション 1: XML を解析する

これを再利用可能なサブルーチン ステップとして実装することができます。

  1. 必要に応じてリポジトリを更新します。

    次の設定で「Subversion」アクションを使用します。

    Path = %PROJDIR%
    Subcommand = update
    
  2. SVN 情報を XML ファイルに保存する

    次の設定で「プログラムの実行」アクションを使用します。

    Command = %DOSCMD% svn info --xml > "%PROJDIR%\svninfo.xml"
    
  3. リビジョンを抽出する

    VBScript の「スクリプトの実行」アクションを使用して、次のコードを適用します。

    dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    dim filename
    filename = Application.ExpandMacros("%PROJDIR%\svninfo.xml")
    dim file
    set file = fso.OpenTextFile(filename, 1)
    dim filecontent
    filecontent = ""
    Do While Not file.AtEndOfStream
        filecontent = filecontent + file.readline + vbNewLine
    loop
    file.Close()
    set file = nothing
    set fso = nothing
    
    Builder.LogMessage(filecontent)
    
    ' Load as XML document
    set xmlDoc=CreateObject("Microsoft.XMLDOM")
    call xmlDoc.loadxml(filecontent)
    
    ' Extract information
    dim revision
    set revision = xmlDoc.SelectSingleNode("/info/entry/@revision")
    
    ' Set output variable
    dim out
    out = Application.ExpandMacros("%OUTPUTMACRO%")
    call Application.Macros(vbldMacroTemporary).Add(out, revision.Value)
    
  4. 一時 XML ファイルを削除する

    設定で「ファイルの削除」アクションを使用します

    Folder = %PROJDIR%
    Include = svninfo.xml
    

サブルーチンは次のようになります。

ビジュアル ビルド サブルーチン ステップ

ビルド スクリプトから使用するには、「サブルーチン呼び出し」アクションを使用し、値 REVISION で OUTPUTMACRO を追加します。次のようになります。

Visual Build サブルーチンの使用法

オプション 2: コマンド ライン出力を解析する

  1. リポジトリに関する情報を取得する

    次の設定で「Subversion」アクションを使用します。

    Subcommand = info
    

    ステップのスクリプト エディターで、次のコードを追加します。

    Sub vbld_StepDone()
        If Step.BuildStatus = vbldStepStatSucceeded Then
            ' parse output for Revision number
            out = vbld_AllMacros()("LASTSTEP_OUTPUT").Value
            pos = InStr(out, "Revision: ")+10
            pos2 = InStr(pos, out, vbCrLf)
            bld_TempMacros.Add "GLOBAL_REV", Mid(out, pos, pos2-pos)
        End If  
    End Sub
    
  2. 一時マクロを保存する

    次の設定で「マクロの設定」アクションを使用します。

    Name = REVISION
    Value = %GLOBAL_REV%
    
于 2016-09-13T08:04:16.497 に答える