私は最近、CおよびPerlで記述されたさまざまなプログラムとスクリプトの組み合わせから構築された現在のシステムを置き換えるために使用される大規模システムの計画の一環として、Visual StudioでさまざまなC#プロジェクトの作業を開始しました。私が現在取り組んでいるプロジェクトは、Subversionにコミットするためのクリティカルマスに達しました。 Visual Studioプロジェクトのリポジトリにコミットすべきものとすべきでないものを考えていました。ビルドアーティファクトであり、実際にコミットする必要のないさまざまなファイルが生成されることはわかっています。また、Visual StudioでSVNを適切に使用するためのアドバイスはないかと思いました。現時点では、Visual Studio 2010ベータ版でSVN 1.6サーバーを使用しています。アドバイス、意見は大歓迎です。
MSDNによると :
次のファイルをVisual Studioソース管理に追加できます。
- ソリューションファイル(
*.sln
)。- プロジェクトファイル、たとえば
*.csproj
、*.vbproj
ファイル。- Visual Studioプロジェクトの実行時の動作を制御するために使用される、XMLに基づくアプリケーション構成ファイル。
ソース管理に追加できないファイルには、次のものが含まれます。
- ソリューションユーザーオプションファイル(
*.suo
)。- プロジェクトユーザーオプションファイル、たとえば
*.csproj.user
、*.vbproj.user
ファイル。- Web情報ファイル、たとえば、
*.csproj.webinfo
、*.vbproj.webinfo
、Webプロジェクトの仮想ルートの場所を制御します。- ビルド出力ファイル、たとえば、
*.dll
および*.exe
ファイル。
AnkhSVN -Visual Studio 2008/2010のSubversionソース管理プラグインを使用することをお勧めします。
これを使用して、ソリューション、プロジェクト、およびソースのリポジトリへの最初の追加とコミットを実行できます。ビルドアーティファクトは追加されません。ビルドによって生成されるものは追加されず、ソリューションによって参照されるファイルのみが追加されます。ソリューションに含まれていない必要な部分が他にある場合は、後で追加できます。
次のファイルをバージョン管理に配置します。
Donot次のファイルをバージョン管理に入れます:
また、オブジェクトファイル、実行可能ファイル、自動生成ファイル(生成される可能性のあるヘッダーなど)を入れないでください。
実行可能ファイルおよびその他の生成されたファイルに関しては、リリースをアーカイブできるようにする場合は例外があります。これは良いアイデアかもしれませんが、おそらくソースコードとは少し異なる方法で、場合によっては別の場所で管理したいと思うでしょう。これを行う場合は、後でデバッグできるように.pdbファイルもアーカイブしてください。シンボルサーバーを使用して、アーカイブされたシンボルを保存することもできます(シンボルサーバーとそのドキュメントについては Debugging Tools for Windows を参照してください)。
SVNから除外するVS固有のファイルのリストを次に示します。
Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
ソリューションレベル:
.sln
ソリューションファイルを追加します.suo
ソリューションユーザーオプションファイルを無視しますプロジェクトレベル:
.csproj
、.vbproj
(およびc ++ proj?)ファイルを追加します.csproj.user
、.vbproj.user
ファイルを無視しますbin
ディレクトリを無視しますobj
ディレクトリを無視しますVSアドインを使用すると、無視する必要があるファイルが生成される場合があります(つまり、ReSharperは.resharper
および.resharper.user
ファイルを生成します)。
無視する項目は、ファイル名(つまり、MyProject.csproj
)によって明示的に無視するか、ワイルドカードパターン(つまり、*.csproj.user
)によって無視できます。
無視を設定したら、ソースのクリーンコピーをチェックアウトしてから、ビルドは変更を表示しません(つまり、バージョン管理されていない新しいファイルは表示されません)。
バージョン管理してはいけないと思うすべてのファイルを手動で含めます。
私のグローバル無視パターンは次のとおりです。
.dll .pdb .exe .cache .webinfo .snk bin obj debug _Resharper .user resharper
無視リストを使用している場合、SVNは大文字と小文字を区別します。したがって、binフォルダーとBinフォルダーを個別に無視することを忘れないでください。
また、質問がありました。ステータスアイコンを更新するのに何度も時間がかかるのはなぜですか。時には非常に混乱します。
Mercurialの無視リストについては、 Mercurial .hgignore for Visual Studio 2008 projects を参照してください。私はSVN無視リストの構文に精通していませんが、このスレッドにはVisual Studioで無視するものの良いリストがいくつかあります。