2011-09-08 11 views

答えて

2

前述したように、あなたはこれを行うには自動プロパティを使用できますが、自分自身の一つの大きな問題尋ねる必要があります:あなたがキーワードを使用したいのはなぜ

  • を?

開発中は、様々なsvnコマンドを使用して、キーワードに格納される情報を簡単に取得できるため、実際には必要ありません。

ソフトウェアがお客様のサイトにいったん設定されると、キーワードが必要だと主張する人もいますが、使用しているソフトウェアのリビジョンを確認するためのより良い仕組みがあります。たとえば、コンパイル時に、より意味のあるリビジョンID(リリース番号とビルド日付など)を含むファイルを作成し、これを「約ボックス」の一種として表示することができます。 IDはより意味があります。

また、カスタマーサイトにあるかもしれないシェルスクリプトに含まれるキーワードを信頼できないことも知っています。シェルスクリプトはリビジョン番号を示すかもしれませんが、シェルスクリプトは編集されている可能性があります。

これは本当に必要で、サイトで強制する必要がある場合は、キーワードプロパティがファイルにないときに失敗するプリコミットトリガーが必要です。自動プロパティはクライアントに対してのみ設定できます。つまり、各開発者にこのセットがあることを確認する必要があります。新しいコンピュータを入手するたびに、再度確認する必要があります。

また、プロパティがファイルにあることを保証しません。リポジトリ内の古いファイルは、編集しても魔法のように追加されません。 (自動プロパティは、ファイルがリポジトリに追加されたときにのみ追加されます)。開発者がそれを取り除くことを妨げるものは何もありません。または、自分の設定で自動プロパティを編集します。

svn:keywordsプロパティが、必要なすべてのファイルに確実に設定され、正しく設定されていることを保証するには、事前コミットトリガを使用する必要があります。プリコミットフックは、このプロパティが設定されていないトランザクションをコミットすることを単に拒否します。開発者は強制的にプロパティを追加します。いくつかの不具合が発生すると、開発者はSubversionクライアントを設定して自動プロパティを使用し、それを維持します。

これを実行できるのはちょうどpre-commit triggerです。トリガーはPerlで書かれていますが、標準のモジュールだけが必要なので、セットアップは簡単です。キーワードが必要なファイルと設定するファイルを指定するように設定できます。ファイルがコミットされていて、svn:keywords属性が正しい値に設定されていない場合、コミットは失敗し、エラーメッセージはコミットが失敗した理由と開発者が何をする必要があるのか​​を説明します。

+0

+1非常に良い点 –

11

はい、Subversionの自動特性を有する:http://www.dcepler.net/post.cfm/subversion-auto-properties

[auto-props]セクションの各エントリはグロブに一致するファイルがが追加されるたびに自動的に適用するようにSubversionのプロパティに続くファイルグロブです。あなたがしたい場合たとえば、すべてのCPPファイルは、デフォルトでは特定のプロパティセットを持っている、そして、あなたの好みに合わせてhttp://www.dcepler.net/post.cfm/subversion-auto-properties上の指示に従って、次の行を変更します。あなたはsvn addでファイルを追加した場合という

 
*.cpp  = svn:eol-style=native; svn:keywords="Author Date Id Rev URL"; svn:mime-type=text/plain 

注意その後自動プロパティを有効にすると、自動プロパティは追加されたファイルに適用されません。自動プロパティは、の自動プロパティが有効になった後に追加されたファイルにのみ適用されます()。

+0

、設定ファイルは、Cにあるかもしれない:\ Users \ユーザー_ユーザ\のAppData \ローミング\ Subversionの – sartoris

1

SVNの格納PL/SQLプログラム(およびSQLスクリプト)のキーワードは、開発プロセスとシステムの整合性に大きな価値をもたらしました。本番環境に送信された変更は、Revisionキーワードによって追跡および管理されます。これを実装する前に、ファイルを移動して正しいファイルが配備されていることを確認するプロセスは非常に誤りがちです。さらに、バージョン・データのデータベースを調べることができます(下記のSQLを参照)。

-- 
    --------- Begin Version Control Data---------------------------------------- 
    -- $LastChangedDate: 2014-06-27 13:45:09 -0500 (Fri, 27 Jun 2014) $ 
    -- $Revision: 1750 $ 
    -- $LastChangedBy: kilarvk $ 
    -- $URL: svn://jdcsubv01/SQL/JDC/Trunk/JDC_UTIL.pks $ 
    --------- End Version Control Data ----------------------------------------- 
    -- 

--select SVN Keyword Info 
SELECT OWNER, 
     NAME, 
     TYPE, 
     SUBSTR(TEXT,INSTR(TEXT,'$')-1) AS KEYWORD 
FROM ALL_SOURCE 
WHERE OWNER = UPPER(NVL('&owner',OWNER)) 
    AND NAME = UPPER(NVL('&&pgm_name',NAME)) 
    AND (text LIKE '%$Revision%' 
    OR TEXT LIKE '%$URL%' 
    OR TEXT LIKE '%$Id%' 
    OR TEXT LIKE '%$LastChanged%') 

例:新しいウィンドウOSののための

JDCSCHEMA API_TESTER_AGNT PROCEDURE $LastChangedDate: 
2014-04-08 15:33:38 -0500 (Tue, 08 Apr 2014) $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $Revision: 1445 $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $LastChangedBy: vamsisx $ 
JDCSCHEMA API_TESTER_AGNT PROCEDURE $URL:svn://jdcsubv01/SQL/JDC/Trunk/API_TESTER_AGNT.prc $ 
+0

は、合意された - 私は、開発者の思いディレクトリ構造から実行可能ファイルをコンパイルする人は、この種のシナリオを忘れることがあります。増分パッチが存在する可能性があり、環境がさまざまな時点で生産からコピーされている可能性があります。また、実際のブランチを見ることができ、リビジョン情報を一目で確認できます。確かに、堅牢なデプロイメントプロセスが必要です。もちろん、コードはデプロイメント後に編集される可能性があります(ただし、そうは望まないでしょう)が、ソースに情報を自動的に生成するようなものはありません。 –

関連する問題