web-dev-qa-db-ja.com

ソース管理下にあるべきではないものは何ですか?

(ほとんどの場合)ソース管理下にあるべきではないファイルやディレクトリについて、多かれ少なかれ完全なリストがあると便利です。何を除外すべきだと思いますか?

これまでの提案:

一般的に

  • 機密情報(パスワード、秘密鍵など)を含む構成ファイル
  • Thumbs.db、.DS_Store、desktop.ini
  • エディタのバックアップ:*〜(emacs)
  • 生成されたファイル(たとえば、DoxyGen出力)

C#

  • 置き場\*
  • obj\*
  • *。EXE

Visual Studio

  • * .suo
  • * .ncb
  • *。ユーザー
  • * .aps
  • * .cachefile
  • *。バックアップ
  • _UpgradeReport_Files

Java

  • *。クラス

Eclipse

私は知りません、そしてこれは私が今探しているものです:-)

Python

  • * .pyc

一時ファイル-。*。sw? -*〜

59
l3dx

生成されるものすべて。 XMLから生成されたバイナリ、バイトコード、コード/ドキュメント。

コメント投稿者から、以下を除外します。

  • コードドキュメント(doxygen、javadoc、pydocなど)を含む、ビルドによって生成されたものすべて

ただし、以下を含めます。

  • ソースがないサードパーティライブラリ[〜#〜]または[〜#〜]ビルドしないでください。

FWIW、非常に大規模なプロジェクトでの私の仕事では、ClearCaseの下に次のものがあります。

  • すべての元のコード
  • Qtソースとビルドされたデバッグ/リリース
  • (ひどく時代遅れの)スペック

ソフトウェア用のモジュールは構築されていません。完全なバイナリは、最新のアップデートとともに数週間ごとに配布されます。

42
Corey D

Thumbs.db.DS_Storeなどのファイルブラウザによって生成されたOS固有のファイル

18
pgb

他のいくつかのVisualStudioの典型的なファイル/フォルダは

*.cachefile 
*.backup 
_UpgradeReport_Files

たとえば、私のカメのグローバル無視パターンは次のようになります

bin obj *.suo *.user *.cachefile *.backup _UpgradeReport_Files
15
apparat

ビルドされるファイルはチェックインしないでください

11
pmeerw

Corey D has said のように、生成されるもの、特にビルドプロセスと開発環境によって生成されるものはすべて適切な候補です。例えば:

  • バイナリとインストーラー
  • バイトコードとアーカイブ
  • XMLとコードから生成されたドキュメント
  • テンプレートとコードジェネレーターによって生成されたコード
  • IDE設定ファイル
  • IDEまたはエディターによって生成されたバックアップファイル

上記のいくつかの例外は次のとおりです。

  • 画像とビデオ
  • サードパーティライブラリ
  • チーム固有IDE設定ファイル

サードパーティのライブラリを使用します。出荷する必要がある場合、またはビルドがサードパーティのライブラリに依存している場合、特にソースがない場合は、ソース管理下に置くのは不合理ではありません。また、一部のソース管理システムはバイナリBLOBの格納にあまり効率的ではなく、おそらくそれらのファイルのシステム差分ツールを利用できないことを考慮してください。

Paul も生成されたファイルについて素晴らしいコメントをしているので、彼の answer をチェックする必要があります。

基本的に、開発者が必要なツールの正確なバージョンを持っていることを合理的に期待できない場合は、生成されたファイルをバージョン管理に置く場合があります。

これらすべてが最終的には、ケースバイケースでソース管理下に置くものを検討する必要があります。その下に何を入れて何を入れないかのハードリストを定義することは、一部の人にしか機能せず、おそらく非常に長い間しか機能しません。そしてもちろん、ソース管理に追加するファイルが多いほど、作業コピーの更新にかかる時間が長くなります。

7
Jonathon Watney

私は別の方法で問題にアプローチします。どのようなものすべきソース管理に含まれていますか?次のようなファイルのみをソース管理する必要があります。

  • (改訂履歴が必要ORはビルドの外部で作成されますが、ビルド、インストール、またはメディアの一部です)AND
  • あなたが制御するビルドプロセスによって生成することはできませんそして
  • 製品を構築するすべてのユーザーに共通です(ユーザー構成なし)

リストには次のようなものが含まれます。

  • ソースファイル
  • make、project、およびsolutionファイル
  • その他のビルドツール構成ファイル(ユーザー関連ではありません)
  • サードパーティライブラリ
  • pDFやドキュメントなどのメディアに掲載されるビルド済みファイル
  • ドキュメンテーション
  • 画像、ビデオ、サウンド
  • wSDL、XSLなどの記述ファイル

ビルド出力がビルド入力になる場合があります。たとえば、難読化の名前変更ファイルは、同じ名前変更スキームを維持するための出力と入力である場合があります。この場合、チェックインしたファイルをビルド入力として使用し、出力を別のファイルに配置します。ビルド後、入力ファイルをチェックアウトし、出力ファイルをコピーしてチェックインします。

除外リストを使用する際の問題は、すべての適切な除外を知ることは決してなく、ソース制御されるべきではない何かをソース制御することになる可能性があることです。

6
Ed Greaves

IDE、ビルドプロセス、またはバイナリ実行可能プロセスによって生成できるものすべて。

6
LiraNuna

例外:

4つまたは5つの異なる回答が、生成されたファイルはソース管理下に置かれるべきではないと述べています。それは完全に真実ではありません。

特殊なツールによって生成されたファイルは、特にそれらのツールの特定のバージョンが必要な場合、ソース管理に属する可能性があります。

例:

  • bison/yacc/antlrによって生成されたパーサー
  • autoconf、automake、libtoolなどによって作成されたconfigureやMakefile.inなどのautotoolsファイル
  • 翻訳またはローカリゼーションファイル、
  • ファイルは高価なツールによって生成される可能性があり、少数のマシンにのみインストールする方が安価な場合があります。

基本的に、開発者が必要な正確なツールの正確なバージョンを持っていることを合理的に期待できない場合は、生成されたファイルをバージョン管理に置く場合があります。

この例外については、svnの人たちが ベストプラクティスの話 で説明しています。

6
Paul Biggar

エディターからの一時ファイル。

.*.sw?
*~

等.

5
John Hyland

desktop.iniは、私が忍び込んだ別のWindowsファイルです。

4
Jason Berry

パスワードまたはその他の機密情報を含む構成ファイル。

3
John Hyland

人々は異なる設定を持つことができるため、実際の構成ファイルはasp.netのweb.configなどです。通常、私がこれを処理する方法は、SVN上にあるweb.config.templateを使用することです。人々はそれを手に入れ、必要な変更を加え、名前をweb.configに変更します。

これとあなたが言ったこととは別に、パスワードを含む機密ファイルに注意してください(たとえば)。

Windows(thumb)またはMac OS(.ds_store)によって生成されるすべての迷惑なファイルを避けてください

3
marcgg

さらに:

Visual Studio

  • * .ncb
2
ufukgun

私がそれについて考えるために見つけた最良の方法は次のとおりです:

新品の店で購入したコンピューターを持っているふりをします。 OSとアップデートをインストールします。ソース管理クライアントを含むすべての開発ツールをインストールします。ローカルソースのルートとなる空のディレクトリを作成します。 「最新の取得」またはソース管理システムが呼び出すものを実行して、ビルドするリリースのクリーンコピーをフェッチします。次に、ビルド(ソース管理からフェッチ)を実行すると、すべてがビルドされます。

この思考プロセスは、特定のファイルをソース管理する必要がある理由を示しています。ビルドがクリーンなシステムで機能するために必要なすべてのファイルです。これには、.designer.csファイル、T4テンプレートの出力、およびビルドで作成されないその他のアーティファクトが含まれます。

2
John Saunders

*.bakWinMergeによって作成されました。

2
Sam Harwell

一時ファイル、グローバル開発および機密情報以外の構成

1
Codebeef

ソース管理に入らないものは3つのクラスに分類されます

  1. プロジェクトとはまったく関係のないこと(明らかに)
  2. インストールメディアにあり、変更されることのないもの(例:サードパーティのAPI)。
  3. ソース管理でareであるものから(またはクラス2のものから)、ビルドプロセスを介して機械的に生成できるもの。
1
T.E.D.

ここで手足に出かけますが、Visual Studioでタスクリストを使用する場合、それらは.suoファイルに保存されていると思います。これは、それらをソース管理に保持する理由ではないかもしれませんが、万が一の場合に備えて、どこかにバックアップを保持する理由です...

0
Benjol

言語が何であれ:

  • キャッシュファイル
  • 一般に、インポートされたファイルも(Webアプリケーションでユーザーがアップロードした画像のように)すべきではありません。
  • 一時ファイル; OS(Windowsのthumbs.dbなど)またはIDEによって生成されたものでも
  • パスワード付きの設定ファイル?リポジトリにアクセスできるユーザーによって異なります

そしてそれについて知らない人のために: svn:ignore 素晴らしいです!

0
Pascal MARTIN

コードのランタイム環境(依存関係ライブラリ、特定のコンパイラバージョンなど)がある場合は、パッケージをソース管理に配置しないでください。私のアプローチは残忍ですが、効果的です。私はmakefileをコミットします。その役割は、(wgetを介して)ものをダウンロードし、解凍して、ランタイム環境を構築することです。

0
Stefano Borini

ソース管理に含まれない特定の.cファイルがあります。

ルールは、ビルドプロセス中に生成されるソース管理には何もありません。

唯一の既知の例外は、ツールのビルドに古いバージョンのツールが必要な場合です(ブートストラップの問題)。その場合、空白からビルドできるように、ソース管理に既知の正常なbootstrapコピーが必要になります。

0
Joshua

この質問が出されてからかなりの時間が経過しました。多くの回答は、関連性はありますが、言語ごとの.gitignoreまたはIDE =レベル。

Githubは、あらゆる種類のプロジェクトやIDE用の.gitignoreファイルの非常に便利なコミュニティコラボレーションリストを作成しました。これは、一見の価値があります。

そのgitリポジトリへのリンクは次のとおりです: https://github.com/github/gitignore

質問に答えるために、以下に関連する例を示します。

OS固有の.gitignoreファイルもあります。以下:

したがって、Windowsを実行し、Eclipseを使用していると仮定すると、次のことができます。 Eclipse.gitignoreWindows.gitignoreをプロジェクトのトップレベルディレクトリにある.gitignoreファイルに連結するだけです。とても気の利いたもの。

リポジトリに.gitignoreを追加してコミットすることを忘れないでください!

おそらく、あなたのIDEはすでにこれを処理しています。VisualStudioはとにかく処理します。

また、.gitignoreファイルの場合、特定の.gitignoreで欠落しているファイルまたはパターンを見つけた場合は、提案された変更を使用してそのファイルのPRを開くことができます。 commit および pull request トラッカーのアイデアをご覧ください。

0

私は常に www.gitignore.io を使用して適切なものを生成しています.ignoreファイル。

0
Jacek Krawczyk