9

gitが空のディレクトリ(ここで最も人気のあるgitの質問の1つ)で機能しないことはよく知っていますが、ディレクトリを追跡しないことに特定の正当化または理論的根拠(可能であれば公式)があるかどうかを尋ねています。

ディレクトリは、場合によっては、それ自体で意味のあるメタデータを持つことができるので、私は尋ねています。たとえば、スティッキーモードが使用されている場合、ディレクトリのファイルモードが重要になる可能性があります。ディレクトリが空であるという単なる事実は、アプリケーションにとって重要な場合があります。

4

3 に答える 3

12

公式の根拠はありません。Git FAQは、単に次のように述べています。

空のディレクトリを許可するように変更を加えるのに十分な能力を持っている人は、この状況を改善するのに十分な配慮をしていません。

于 2012-11-27T19:10:49.290 に答える
5

Gitはコンテンツを追跡し、フォルダ/ディレクトリはコンテンツではありません。あなたは正しいですが、いくつかのメタデータはあなたにとって興味深いかもしれません。このような場合、gitが認識するコンテンツを提供するために、.gitignoreファイルまたはその他の意味のないファイルをディレクトリに追加することをお勧めします。

空のディレクトリをGitリポジトリに追加するにはどうすればよいですか?を参照してください。

これは、Gitが機能するように設計された方法です。

以前行っていた一部のWebプロジェクトでは、php用のログディレクトリが必要でしたが、もちろん.logファイルも無視されていたため、基本的に、vhost設定のためにApacheを正しく実行するために必要な空のログディレクトリがありました。

この場合、何も入っていないreadme.txtを追加しました。

私はあなたがすでに他のスレッドでこの答えに出くわしたと確信しています、それでもリンクの価値があります:https ://stackoverflow.com/a/115992/662605

于 2012-11-27T18:38:25.267 に答える
4

Gitは「愚かなコンテンツトラッカー」です。そのデザインの多くは「愚か」であることに基づいています。つまり、かなり単純な(したがって一般的な)内部表現を持ち、それを中心に構築されたツールに依存して、何か凝ったことをします。また、ソースコードを追跡するためだけに設計されています。任意のアクセス許可で任意のディレクトリツリーを追跡できるようには設計されていません。これは、ソースコードの追跡に関係のない問題のネズミ全体に陥る可能性があるためです(ユーザーIDとグループID、名前、ハードリンク、xattrsを保存しますか? ?リソースフォーク?など)。

愚かであることの一部は、ファイルの内容を追跡することです。Unix環境でソースコードを操作するために不可欠ないくつかのメタデータ(シンボリックリンクと実行可能ビット)がたまたま保存されています。人々がチェックインするのに十分なスクリプトがあり、実行可能ビットを追跡する必要があります。そうしないと、誰もがそれを実装する必要があるからです。しかし、これら2つのメタデータに加えて、Gitはファイルの内容とその名前を追跡するだけです。

それ以上のユースケースがある場合は、独自の磁器を作成するか、既存の磁器をラップするか、Gitが提供するフック属性などの拡張ポイントを使用する必要があります。

権限とディレクトリをより詳細に追跡したい場合は、etckeeperのようなラッパーを使用することをお勧めします。

于 2012-11-27T19:25:50.180 に答える