2009-02-23 8 views
10

バージョン管理されていないSubversionにファイルを追加することはできますか? F.ex.個々の環境に合わせて編集する必要があるconfig-files新しいプログラマがプロジェクトに接続すると、元のファイルをSubversionから取得する必要がありますが、編集後にコミットされることはありません。更新すると上書きされません。バージョン管理されていないファイルをサブバージョンに追加

おそらく元のプロジェクト全体のタグを作成するのが解決策ですか?最初にタグをダウンロードし、次にトランクから更新しますか?

アイデア?以下のコメントへ


明確化: プロジェクト(サイトコア)は、異なるファイル約30K数で構成されています。これらのうち約100種類をバージョンアップする必要があります。バージョニングにすべてのファイルを含める必要がある場合、各コミットは永遠に(すべてのフォルダを通じたカメの検索として)かかります。今日は、すべてのバージョン管理されていないフォルダを含むzipファイルを作成し、svnでフォルダを無視として設定し、代わりにzipを追加します。問題は、zip内の1つ以上のファイルを変更する必要がある場合です。次に、新しい〜1GB-zipをリポジトリにコミットする必要があります。

+0

これらのバージョン管理されていないファイルはデータであり、バージョン管理されたファイルは実際のソフトウェアですか? –

+0

いいえ、データだけではありません。主にSitecore CMSです。設定ファイル、バイナリファイル、イメージ、ドキュメントなど。 – Zooking

答えて

14

プロジェクトを使用しているすべてのユーザーがアクセスできるWebサーバーまたはファイルサーバーにバージョン管理されていないファイルを置いて、自動的にスクリプトを追加して(wget/scpなど) svnignoredフォルダに移動して、それらがサブバージョンによって取得されないようにします。

これらのファイルが変更されることが懸念される場合は、バージョン管理しないでください。

svn:externalsもこの状況で役立ちます。私はと思う。状況が許せば簡単に無視するように設定することができる。

+0

svnでテンプレートを使ったことがありません。ファイルがバイナリファイルの場合、このメソッドは機能しますか? – Zooking

+0

テンプレートでは、私はSubversionにあるファイルのジェネリックバージョンを作成することを意味しましたが、特定のバージョンの汎用バージョンをスクリプトに自動的にコピーします。 –

+0

ローカル環境に依存するバイナリファイルの種類はありますか?チャンスはどんなものでも、バイナリから分離する可能性があります。 – drby

4

私は、実行時に構成ファイルを生成するスクリプトを作成します。このようにして、あなたはSCMが邪魔になる心配はありません。

2

テンプレートファイルを使用してください。あなたのファイルがconfig.txtであるとします。ファイルを見て、ローカル設定を行う場所にマーカーを挿入し、configTemplate.txtに名前を変更してコミットします。その後、各開発者はファイルをチェックアウトし、コピーを作成し、ファイル名のテンプレート部分を削除して(つまり、誰も正しいconfig.txtを取得するように)、新しいファイルを無視リストに追加する必要があります。次に、マーカがテンプレートファイル内にあるローカル設定で全員に手動で簡単に編集させるか、(可能であれば)スクリプトのためにスクリプトを使用します。

テンプレートファイルは決して変更されません(もちろん設定ファイルの形式に違いがない限り)。あなたの編集(とコメント)への返信で

:自動的に生成されていません

画像、文書やバイナリファイルは、おそらくすべてのバージョン管理下に置くべきです。あるいは、少なくとも私は彼らにバージョン管理されていない理由がないと思う。

5

開発者ごとにweb.configを作成する必要はなく、configファイルの特定のセクションをconfigSource属性でオーバーライドすることができます。

configSource属性は、(ファイルが存在する場合)指定されたブロックを上書きするファイル名を指定し、存在しない場合はそのブロックをそのまま使用します。残りの設定を共有することができながら、あなただけの、彼のために接続してconnections.configを追加することができ、開発者のシステム上で

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings configSource="connections.config"> 
     <add name="LocalSqlServer" 
      connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

(だからこれは、テンプレートの問題が解決しないが、それはあなたが多くの小さなとして大きなテンプレートの管理を支援することができます)

3

あなたはsubverionを使用している方法を再考する必要があります。 Subversionはファイルに関するバージョン情報を保存します。もはや、それほどではありません。バージョン管理されていないファイルはSubversionに保存することはできません。意味がありません。 Subversionに1GBのジップを格納することは、何か良いことをするつもりはありません。

開発者がこのファイルの設定を、ユーザーのホームディレクトリ内のパーソナライズされた構成ファイルまたは多分環境変数によってオーバーライドできる方法を調べる必要があります。

0

すべてのプログラマが独自のブランチで作業し、それらの変更をメインブランチ/トランクにマージさせることができます。もちろん、あなたのチームメイトは、バージョンコントロールを使用してスクラッチを作成し、ちょうどチェックアウト、更新、コミット以上のものを使用できるようにする必要があります。

関連する問題