8

新しいソースファイルが追加されるたびにこのプロパティをキーワードごとにオンにする必要がないように、デフォルトでsvn:keywordsを有効にする方法はありますか?

4

3 に答える 3

11

はい、Subversion の自動プロパティを使用: http://www.dcepler.net/post.cfm/subversion-auto-properties

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

*.cpp = svn:eol-style=native; svn:keywords="作成者日付 ID Rev URL"; svn:mime-type=text/plain

自動プロパティを使用してファイルを追加しsvn add、その後有効にした場合、自動プロパティは追加されたファイルに適用されないことに注意してください。自動プロパティは、自動プロパティが有効になったに追加されたファイルにのみ適用されます。

于 2011-09-08T14:12:19.103 に答える
3

前述のように、自動プロパティを使用してこれを行うことができますが、次の 1 つの大きな質問を自問する必要があります。

  • なぜキーワードを使用したいのですか?

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

ソフトウェアが顧客サイトにある場合はキーワードが必要であると主張する人もいますが、使用しているソフトウェアのリビジョンを検証するためのより良いメカニズムがあります。たとえば、コンパイル中に、より意味のあるリビジョン ID (おそらくリリース番号とビルド日) を持つファイルを作成し、これを一種の「アバウト ボックス」として表示できます。ID の方が意味があります。

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

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

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

svn:keywords プロパティが必要なすべてのファイルにあり、正しく設定されていることを保証するために、コミット前トリガーを使用する必要があります。pre-commit フックは、このプロパティが設定されていないトランザクションのコミットを単純に拒否します。開発者はプロパティを追加する必要があります。いくつかの不満の後、開発者は Subversion クライアントをセットアップして自動プロパティを使用し、それを自分で維持します。

たまたま、これを強制できるプレコミットトリガーがあります。トリガーは Perl で書かれていますが、必要なものは標準モジュールだけなので、セットアップは簡単です。どのファイルがキーワードを必要とし、何に設定する必要があるかを示すように構成できます。ファイルがコミットされていて、svn:keywords 属性が正しい値に設定されていない場合、コミットは失敗し、コミットが失敗した理由と開発者が何をする必要があるかを示すエラー メッセージが表示されます。

于 2011-09-08T15:22:43.690 に答える