2011-04-15 17 views
1

私は最近、this great guideに従って、Subversionリビジョンを私のC++/C#ビジュアルスタジオプロジェクトから生成されたexe/dllファイルに統合しました。これで、exeファイルを簡単に右クリックして、バイナリをビルドするためにどのリビジョンが使用されたのかを見つけることができます(下の図を参照)。私はこの機能が大好きです。Flash/Flex:Subversionリビジョンをexe/swfファイルに統合しますか?

空気/スタンドアローンアプリケーションを構築するときに、これをフラッシュ/フレックスで行うことは可能ですか?私はexeファイルとdllの両方をタグ付けしたいと思います。

Details with svn revision information http://www.zachburlingame.com/wp-content/uploads/2011/03/c_svn_autoversion_version_info.png


溶液でアップデート:

ここで提供ANTベースのソリューションは、SVN情報が.EXE/.dllファイルに焼き付けされたもののように滑らかではありませんが、ファイル(私の意見では)、それは私の問題を解決し、今私たちの作品で実装されています。 私の設定はKevinとfrankhermesの両方の回答に基づいていますが、svn.exeやjarファイルの代わりにSubMCRev.exeを使用しています。

この実装では、起動時にsvnリビジョンをログファイルにダンプします。

Built with SVN Revision: 1.0.0.1181 (local modifications found) 

SVN目標:

<target name="SVN Revision"> 
     <exec executable="subWCRev.exe" outputproperty="revision"> 
      <arg value="${basedir}\\.." /> 
      <redirector> 
       <outputfilterchain> 
        <linecontainsregexp> 
         <regexp pattern='^([Last]|[Local])' /> 
        </linecontainsregexp> 
        <tokenfilter> 
         <replaceregex pattern='[\D]+([\d]+)' replace="Built with SVN Revision: 1.0.0.\1" /> 
         <replaceregex pattern='Local modifications found' replace=" (local modifications found)" /> 
        </tokenfilter> 
        <striplinebreaks /> 
       </outputfilterchain> 
      </redirector> 
     </exec> 
    </target> 

コンパイル対象:以下のSVNのターゲットからの出力は次のようになります私は実際にこれを自分で行うには探していたので、私は考え出し

<target name="compile" depends="init, SVN Revision"> 
     <mxmlc file="..." output="..."> 
      <define name="compile::REVISION" value="'${revision}'" /> 
     ....   
     </mxmlc> 
    </target> 
+0

これは直接できないかもしれませんが、AIRでデフォルトで統合されたこのクールな自動設定機能を使用できます。http://gregsramblings.com/2008/08/16/adding-auto-update-features-to-your -air-application-in-3-easy-steps/ – Neeraj

+0

これは正しいことだと思います。私にそれを答えとして書いて、正しいものとしてマークしてください。 – Neeraj

+0

答えてくれてありがとうNeeraj。これは実際には素晴らしい機能ですが、現在の設定と一致せず、セットアップに手間がかかりません。私はあなたのコメントに感謝し、後で詳しく調べますが、それは私を直接助けません。これを回答者にすると、私はあなたに投票アップを行います:) –

答えて

1

= Dあなたはので、私はそれを自分で使用することができるため、この方法が動作するかどうか、私に教えてください:

私のbuild.xmlのスニペット:これはsvn.exeの代わりに2つのjarファイル(svnkitとsvntask)を使用します(クロスプラットフォームで動作します)。これらのjarもsvn経由でチェックインされますので、 。

 <mxmlc file="${src.dir}/@{appfile}[email protected]{ext}" 
      output="@{output}/@{appfile}.swf" 
      debug="@{debug}" 
      target-player="${version_major}" 
      optimize="true" 
      locale="" 
      use-network="true" 
     > 
      <define name="compile::REVISION" value="'${revision}'"/> 
      [... rest snipped] 
     </mxmlc> 

が次にあなたがASでその変数を使用することができます:

var version:String = "1.0."+compile::REVISION; 

<!-- SVN revision stuff --> 
<typedef resource="com/googlecode/svntask/svntask.xml"> 
    <classpath> 
     <fileset dir="${basedir}/util"> 
      <include name="svnkit.jar"/> 
      <include name="svntask.jar"/> 
     </fileset> 
    </classpath> 
</typedef> 

<target name="revision"> 
    <svn><info path="${basedir}" revisionProperty="revision" /></svn> 
    <echo>${revision}</echo> 
</target> 
<!-- /SVN revision stuff --> 

は今、我々は、条件付きコンパイル変数としてのmxmlcタスクに含めるプロパティでリビジョンを持っています

コードをFlash Builderでも使用するには、追加のコンパイラ引数に次の行を追加する必要があります。

-define+=compile::REVISION,'dev' 

このようにして、開発コードには改訂版「dev」があり、コードのコミット済みバージョンから構築されたものではないことを示します。

+0

フランク、お返事ありがとうございました。ちょっとした微調整の後、私はSubWCrevをベースにしたソリューションを使用していますが、そうでなければあなたのものに似ています(私の質問に掲載されています)。ありがとうございました! –

4

私はそれを調べるだろう。私はANTとmxmlcを使ってビルドを行います。リビジョン番号を取得するには、hereというANTスニペットがあります。

<target name="find_revision" description="Sets property 'revision.number' to the head svn revision"> 
     <property name="revision" value="HEAD"/> 

     <!-- find out revision number of HEAD, need svn.exe installed on local machine --> 
    <exec executable="svn" outputproperty="revision.number"> 
     <arg line="info -r ${revision}"/> 
     <redirector> 
      <outputfilterchain> 
       <linecontainsregexp> 
       <regexp pattern='^Revision' /> 
       </linecontainsregexp> 
       <tokenfilter> 
       <replaceregex pattern='[\D]+([\d]+)' replace="\1" /> 
       </tokenfilter> 
      </outputfilterchain> 
     </redirector> 
    </exec> 
</target> 

リビジョン番号が見つかったら、コンパイル時に変数をグローバル定数として渡すことができます。これはmxmlc parameter:経由で行われます。

define=NAMESPACE::variable,value 

この変数は、AS3で取得して任意の方法で使用できます。詳細は、using conditional compilatio nを参照してください。

AIRアプリケーションの記述子をプログラムで設定する方法がまだ見つかりませんでしたので、コンパイルする前にANTを使用してXML記述子ファイルを編集/作成する必要があります。

私たちは、次のような方法(と、それはケビンの答えにかなり似ていますが、私はそれが動作していることを確認することができます)を使用

+0

「get HEAD revnum」を使用することはできません。ビルドしているコードのバージョンです(たとえば、誰かがあなたの後ろにいるようにチェックされている場合)。 SubWCRevを使用して、ビルドしている作業コピーのrevnumを取得します。 – gbjbaanb

+0

ケビン、お返事ありがとうございました。それより下のフランケルズの追加で、多かれ少なかれ完全な解決策でした。残念ながら私は複数の回答を受け入れることはできませんが、少なくともあなたの投稿に私の投票権があります。 ypourの知恵をもう一度ありがとう! –

関連する問題