1

私の仕事では Perforce を使用しています。デポに好きなだけコードを入れることができ、開発者はクライアントで特定のサブディレクトリを指定するだけでよく、そのサブセットだけがローカル エリアにダウンロードされる方法が本当に気に入っています。

私が理解していることから[1] [2] [3]、Git では、スパース チェックアウトはフォルダー/ファイルのサブセットをチェックアウトしますが、リポジトリ全体をダウンロードします。ディスクスペースを節約することです。ダウンロードできる--depth履歴は限られていますが、これは私が満足する解決策ではありません。

Git を使用している場合、大規模なコード プロジェクトにはどのような代替手段がありますか? Linus は、すべての Linux カーネル コードを1 つのリポジトリに格納しているようです。コードのサブセットで作業したい場合はどうすればよいですか?

4

1 に答える 1

1

原則として、これはチェックアウト レベルで行うべきことではなく、リポジトリの組織的な問題のようです。

Git は、リポジトリ全体を持つユーザーを中心に大きく展開しています。これが、集中管理システムではなく「分散バージョン管理」システムと呼ばれる理由です。

一般に、Git リポジトリには、可能な限り小さく独立した単一の自己完結型コード モジュールが含まれている必要があります。階層化されたプロジェクトがある場合は、サブモジュールを使用して、それを含むリポジトリとサブリポジトリのセットに編成することも検討できます。

ほとんどの git ホスティング サービスは、1 GB 未満の最大リポジトリ サイズを推奨または要求しています。多くの場合、これは現実的には、それによって消費されるディスク容量が最新のコンピューターでは小さいことを意味します。

Linux は例外であり、単一の git リポジトリでホストされる最大の主要プロジェクトの 1 つであり、低速のハードウェアではクローン作成やその他の負荷の高い操作の実行に時間がかかる可能性があります。ただし、これも Linux カーネルの設計上の選択にすぎず、さまざまな長所と短所があります。

tldr:いいえ、レポ全体を複製せずに部分的なチェックアウトを実行する良い方法はありませんが、レポは実行可能なほど小さいはずなので、これは問題にはなりません。

于 2015-11-18T15:38:17.480 に答える