(ほとんどの場合)ソース管理下にあるべきではないファイルやディレクトリについて、多かれ少なかれ完全なリストがあると便利です。何を除外すべきだと思いますか?
これまでの提案:
一般的に
C#
Visual Studio
Java
Eclipse
私は知りません、そしてこれは私が今探しているものです:-)
Python
一時ファイル-。*。sw? -*〜
生成されるものすべて。 XMLから生成されたバイナリ、バイトコード、コード/ドキュメント。
コメント投稿者から、以下を除外します。
ただし、以下を含めます。
FWIW、非常に大規模なプロジェクトでの私の仕事では、ClearCaseの下に次のものがあります。
ソフトウェア用のモジュールは構築されていません。完全なバイナリは、最新のアップデートとともに数週間ごとに配布されます。
Thumbs.db
や.DS_Store
などのファイルブラウザによって生成されたOS固有のファイル
他のいくつかのVisualStudioの典型的なファイル/フォルダは
*.cachefile
*.backup
_UpgradeReport_Files
たとえば、私のカメのグローバル無視パターンは次のようになります
bin obj *.suo *.user *.cachefile *.backup _UpgradeReport_Files
ビルドされるファイルはチェックインしないでください
Corey D has said のように、生成されるもの、特にビルドプロセスと開発環境によって生成されるものはすべて適切な候補です。例えば:
上記のいくつかの例外は次のとおりです。
サードパーティのライブラリを使用します。出荷する必要がある場合、またはビルドがサードパーティのライブラリに依存している場合、特にソースがない場合は、ソース管理下に置くのは不合理ではありません。また、一部のソース管理システムはバイナリBLOBの格納にあまり効率的ではなく、おそらくそれらのファイルのシステム差分ツールを利用できないことを考慮してください。
Paul も生成されたファイルについて素晴らしいコメントをしているので、彼の answer をチェックする必要があります。
基本的に、開発者が必要なツールの正確なバージョンを持っていることを合理的に期待できない場合は、生成されたファイルをバージョン管理に置く場合があります。
これらすべてが最終的には、ケースバイケースでソース管理下に置くものを検討する必要があります。その下に何を入れて何を入れないかのハードリストを定義することは、一部の人にしか機能せず、おそらく非常に長い間しか機能しません。そしてもちろん、ソース管理に追加するファイルが多いほど、作業コピーの更新にかかる時間が長くなります。
私は別の方法で問題にアプローチします。どのようなものすべきソース管理に含まれていますか?次のようなファイルのみをソース管理する必要があります。
リストには次のようなものが含まれます。
ビルド出力がビルド入力になる場合があります。たとえば、難読化の名前変更ファイルは、同じ名前変更スキームを維持するための出力と入力である場合があります。この場合、チェックインしたファイルをビルド入力として使用し、出力を別のファイルに配置します。ビルド後、入力ファイルをチェックアウトし、出力ファイルをコピーしてチェックインします。
除外リストを使用する際の問題は、すべての適切な除外を知ることは決してなく、ソース制御されるべきではない何かをソース制御することになる可能性があることです。
IDE、ビルドプロセス、またはバイナリ実行可能プロセスによって生成できるものすべて。
例外:
4つまたは5つの異なる回答が、生成されたファイルはソース管理下に置かれるべきではないと述べています。それは完全に真実ではありません。
特殊なツールによって生成されたファイルは、特にそれらのツールの特定のバージョンが必要な場合、ソース管理に属する可能性があります。
例:
基本的に、開発者が必要な正確なツールの正確なバージョンを持っていることを合理的に期待できない場合は、生成されたファイルをバージョン管理に置く場合があります。
この例外については、svnの人たちが ベストプラクティスの話 で説明しています。
エディターからの一時ファイル。
.*.sw?
*~
等.
desktop.ini
は、私が忍び込んだ別のWindowsファイルです。
パスワードまたはその他の機密情報を含む構成ファイル。
人々は異なる設定を持つことができるため、実際の構成ファイルはasp.netのweb.configなどです。通常、私がこれを処理する方法は、SVN上にあるweb.config.templateを使用することです。人々はそれを手に入れ、必要な変更を加え、名前をweb.configに変更します。
これとあなたが言ったこととは別に、パスワードを含む機密ファイルに注意してください(たとえば)。
Windows(thumb)またはMac OS(.ds_store)によって生成されるすべての迷惑なファイルを避けてください
さらに:
Visual Studio
私がそれについて考えるために見つけた最良の方法は次のとおりです:
新品の店で購入したコンピューターを持っているふりをします。 OSとアップデートをインストールします。ソース管理クライアントを含むすべての開発ツールをインストールします。ローカルソースのルートとなる空のディレクトリを作成します。 「最新の取得」またはソース管理システムが呼び出すものを実行して、ビルドするリリースのクリーンコピーをフェッチします。次に、ビルド(ソース管理からフェッチ)を実行すると、すべてがビルドされます。
この思考プロセスは、特定のファイルをソース管理する必要がある理由を示しています。ビルドがクリーンなシステムで機能するために必要なすべてのファイルです。これには、.designer.csファイル、T4テンプレートの出力、およびビルドで作成されないその他のアーティファクトが含まれます。
*.bak
WinMergeによって作成されました。
一時ファイル、グローバル開発および機密情報以外の構成
ソース管理に入らないものは3つのクラスに分類されます
ここで手足に出かけますが、Visual Studioでタスクリストを使用する場合、それらは.suoファイルに保存されていると思います。これは、それらをソース管理に保持する理由ではないかもしれませんが、万が一の場合に備えて、どこかにバックアップを保持する理由です...
言語が何であれ:
そしてそれについて知らない人のために: svn:ignore
素晴らしいです!
コードのランタイム環境(依存関係ライブラリ、特定のコンパイラバージョンなど)がある場合は、パッケージをソース管理に配置しないでください。私のアプローチは残忍ですが、効果的です。私はmakefileをコミットします。その役割は、(wgetを介して)ものをダウンロードし、解凍して、ランタイム環境を構築することです。
ソース管理に含まれない特定の.cファイルがあります。
ルールは、ビルドプロセス中に生成されるソース管理には何もありません。
唯一の既知の例外は、ツールのビルドに古いバージョンのツールが必要な場合です(ブートストラップの問題)。その場合、空白からビルドできるように、ソース管理に既知の正常なbootstrapコピーが必要になります。
この質問が出されてからかなりの時間が経過しました。多くの回答は、関連性はありますが、言語ごとの.gitignore
またはIDE =レベル。
Githubは、あらゆる種類のプロジェクトやIDE用の.gitignore
ファイルの非常に便利なコミュニティコラボレーションリストを作成しました。これは、一見の価値があります。
そのgitリポジトリへのリンクは次のとおりです: https://github.com/github/gitignore
質問に答えるために、以下に関連する例を示します。
OS固有の.gitignore
ファイルもあります。以下:
したがって、Windowsを実行し、Eclipseを使用していると仮定すると、次のことができます。 Eclipse.gitignore
とWindows.gitignore
をプロジェクトのトップレベルディレクトリにある.gitignore
ファイルに連結するだけです。とても気の利いたもの。
リポジトリに.gitignoreを追加してコミットすることを忘れないでください!
おそらく、あなたのIDEはすでにこれを処理しています。VisualStudioはとにかく処理します。
また、.gitignore
ファイルの場合、特定の.gitignore
で欠落しているファイルまたはパターンを見つけた場合は、提案された変更を使用してそのファイルのPRを開くことができます。 commit および pull request トラッカーのアイデアをご覧ください。
私は常に www.gitignore.io を使用して適切なものを生成しています.ignore
ファイル。