SVNリビジョン番号をASP.NET Webサイトと同期するにはどうすればよいですか?


93

Stack Overflowの下部にはSubversionのバージョン番号があります。

SVNリビジョン:679

このような自動バージョン管理を.NET Web Site/Application、Windowsフォーム、WPDプロジェクト/ソリューションで使用したいと思います。

これを実装するにはどうすればよいですか?


@バルーンTortoiseSVNを使用している場合は、パッケージ化されたSubWCRevプログラムを使用できます。作業コピーを照会し、最も高いリビジョン番号のみを通知します。確かに、これはサーバー側の問題に対するクライアント側のアプローチのようですが、これは優れたコマンドラインプログラムなので、出力をキャプチャしてかなり簡単に使用できるはずです。
nickf 2008

ここで言っように、SubWCRevにTortoiseSVNを使用していない場合は、同じことを行うsvnversionを使用できます。
nickf 2008

回答:


31

ジェフはポッドキャストのトランスクリプトを介したリーフに基づいてCruiseControl.NETを使用しているようです。これには、ソース管理から本番までの自動デプロイメント機能があるようです。これは挿入が行われている場所でしょうか?


2
CruiseControl.Netを使用していない場合は、私の答えを確認してください(恥知らずなプラグイン!)- stackoverflow.com/questions/163/… ; o)
Andrew

リンクが壊れている@saint_groceon
Cacho Santa

27

これは、自動ビルドのためにxUnit.netを使用して行います。私たちは使用していますCruiseControl.net(そしてTeamCityを試しています)。継続的インテグレーションのために実行するMSBuildタスクは、ビルド番号を自動的に変更するため、結果のビルドZIPファイルには、適切にバージョン管理された一連のDLLおよびEXEが含まれています。

私たちのMSBuildファイル正規表現置換を行い、DLLのUsingTask参照が含まれています(あなたがしている歓迎、それも同様にMS-PLライセンスによってカバーされていますように、このDLLを使用します)

  <UsingTask
     AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll"
     TaskName = "CodePlex.MSBuildTasks.RegexReplace" />

次に、CIシステムによって自動的に提供されるビルド番号を抽出します。また、必要に応じてソース管理プロバイダーにソースリビジョン番号を提供させることもできますが、CIシステムのビルド番号の方が便利であることがわかりました。これは、CIビルド番号で統合結果を確認できるだけでなく、ビルドに含まれていたチェンジセットにリンクします。

 <!-カスケードはビルド番号を見つけようとします->

 <PropertyGroup Condition = "'$(BuildNumber)' == ''">
   <BuildNumber> $(BUILD_NUMBER)</ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup Condition = "'$(BuildNumber)' == ''">
   <BuildNumber> $(ccnetlabel)</ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup Condition = "'$(BuildNumber)' == ''">
   <BuildNumber> 0 </ BuildNumber>
 </ PropertyGroup>

(TeamCityのBUILD_NUMBERを試し、次にCC.netのccnetlabelを試します。どちらもない場合は、デフォルトで0に設定されているため、自動ビルドスクリプトを手動でテストできます。)

次に、すべてのプロジェクトにリンクするGlobalAssemblyInfo.csファイルにビルド番号を設定するタスクがあります。

 <Target Name = "SetVersionNumber">
   <RegexReplace
       Pattern = 'AssemblyVersion \( "(\ d + \。\ d + \。\ d +)\。\ d +" \)'
       Replacement = 'AssemblyVersion( "$ 1。$(BuildNumber)")'
       Files = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "attrib -r xunit.installer \ App.manifest" />
 </ Target>

これにより、AssemblyVersion属性が見つかり、abcdバージョン番号がabcBuildNumberに置き換えられます。通常は、ビルダー番号の最初の3つの部分を固定し、4番目の部分をゼロにして、ソースをチェックインしたままにします(fe、今日は1.0.2.0)。

ビルドプロセスでは、SetVersionNumberタスクがビルドタスクの前にあることを確認してください。最後に、Zipタスクを使用してビルド結果を圧縮し、すべての自動ビルドのバイナリの履歴を取得します。


25

あなたはコードのどこかに以下を追加することでそれを行うことができます

$Id:$

たとえば、@ Jeffは次のようにしました。

<div id="svnrevision">svn revision: $Id:$</div>

チェックインすると、サーバーは$ Id:$を現在のリビジョン番号に置き換えます。この参考文献見つけました

あり、$日付:$$リビジョン:$$リビジョン:$


ファイルにsvn:keywords属性も設定されていることを確認する必要があります。そうでない場合、$ Id $などは自動置換されません。参照してくださいこのページを。(svn:keywordsまで下にスクロール)
Michael Stum

1
私は$ Rev $を使用してこれを試してみましたが、ある程度は機能します。問題は、出現するファイルが変更されたときにのみキーワードを更新するように見えることです。つまり、$ Rev $が含まれているファイル(私の場合、私のASP.NETマスターページ)に影響を与えない変更がプロジェクトに加えられた場合、プロジェクトはユーザーに表示されるよりも高いリビジョンになります。 。誰かこれについて何か考えはありますか?SVNが常にファイル内のキーワードを更新するようにする方法はありますか?
クリスロバーツ

5
これは、特定のファイルに対する最後の変更のリビジョン番号を挿入するだけではありませんか?2つのファイルのリポジトリを設定して1つを変更し、エクスポートとチェックアウトの両方を試みましたが、他のファイルはどちらの場合も1のままでした。
Lasse V. Karlsen、

lassevkは正しいです。これは、ファイル自体が変更されたときにのみ変更されます。
ブルーノロペス

VisualSVNとTortoiseSVNを使用して、$ Id:$を追加すると、ページに "$ Id:$"が表示されます。この回答が機能するサーバー/クライアントを確認しておくと便利です。
トラビス

17

ASP.Net MVC(StackOverflowと同じように)を使用している場合は、最新のSVNリビジョンを自動的に取得して表示する方法についてわかりやすい3ステップのガイドを作成しました。このガイドは、この質問そのものを自分で考えて発想を得たものです。:o)


素晴らしいサウンドですが、リンクが壊れています!
Peter C

1
これは、SVNリビジョンに基づくバージョン管理の表示を自動化するための優れたソリューションでした。1つの利点は、SVNサーバーへの呼び出しを必要としないことです。
Ben Elder

リンクが壊れている、またはサイトがダウンしている
Cacho Santa

1
ありがとう、@ cacho、修正済み-サーバー障害でした[sic]; o)
Andrew

10

@バルーンTortoiseSVNを使用している場合は、パッケージ化されたSubWCRevプログラムを使用できます。作業コピーを照会し、最も高いリビジョン番号のみを通知します。確かに、これはサーバー側の問題に対するクライアント側のアプローチのようですが、これは優れたコマンドラインプログラムなので、出力をキャプチャしてかなり簡単に使用できるはずです。


9

$revその他、個別ファイルのリビジョンなので、ファイルが変更されない限り変更されません。Webページの番号は、プロジェクト全体のsvnリビジョン番号です(ほとんどの場合、私はここで想定しています)。これは、他の人が指摘しているファイルリビジョンとは異なります。

この場合、CCNETがプロジェクトのリビジョン番号を取得し、Webページの一部をその番号で書き換えていると想定しています。任意のCIソリューションでこれを行うことができるはずです。これをCCNETおよびTeamcityで自分で設定します(ただし、Webページではなく、デプロイメント/アセンブリバージョンの自動バージョン管理)。

これを行うには、それをサポートするCIソリューションを使用するか、ビルドプロセス(MSbuild / Nant)を使用してそのバージョンを保存し、「デプロイ」する前にファイルに書き込みます。


5

@BradWilsonの回答に追加するには:必要に応じて、ソース管理プロバイダーにソースリビジョン番号を提供させることもできます。」

SubversionとMSBuildを接続するには: MSBuild Community Tasks Project

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.