DUICUO

2022年、オープンソースの友であり続けるために - パート2:スパースチェックアウト

詳細については、以下をご覧ください。

51CTOとHuaweiが共同で構築したHarmonyOSテクノロジーコミュニティ。

https://ost..com

コミュニティ内のリポジトリの中には非常に大きなものがあり、ダウンロードに非常に時間がかかります。この記事では、スパースチェックアウト、つまり必要なフォルダやファイルのみをチェックアウトする方法について具体的に説明します。この記事は「2022年もオープンソースの友であり続ける」シリーズに収録されます。

1. スパース検出とは何ですか?

Gitリポジトリが非常に大きい場合、Gitコマンドの実行に非常に長い時間がかかることがあります。これらの問題に対処するため、Gitバージョン1.7.0以降ではスパースチェックアウトが導入されました。スパースチェックアウトを使用すると、指定したディレクトリまたはファイルのみをチェックアウトできるため、大規模なリポジトリでのGitコマンドの実行時間が大幅に短縮されます。指定したディレクトリまたはファイルのみをチェックアウトするには、`.git/info/sparse-checkout`ファイルでそのディレクトリまたはファイルへのパスを指定する必要があります。

次のデモンストレーションでは、https://gitee.com/openharmony/docs などのリポジトリ内のいくつかのフォルダーをすばやくチェックアウトする方法を示します。

2. Gitのスパース検出を設定する

`docs` というディレクトリを作成し、Git リポジトリを初期化して、`https://gitee.com/openharmony/docs` リポジトリからスパースチェックアウトを使用していくつかのフォルダをチェックアウトします。新しく作成したディレクトリに移動し、`git config core.sparseCheckout true` コマンドを使用して Git のスパースチェックアウトモードを有効にします。以下の画像をご覧ください。

 mkdir ドキュメント
CD ドキュメント
git 初期化
git config core .sparseCheckout をtrue にする
git config --list

次に、リポジトリディレクトリ内の `.git/info/sparse-checkout` ファイルを編集して、チェックアウトルールを指定します。`.git/info/sparse-checkout` の `.gitignore` と同じマッチングパターンを使用します。例えば、`!/dir2/*` と `/*.java` はマッチングしません。ここでは、`https://gitee.com/openharmony-sig/online_event` リポジトリ内の `/zh-cn/device-dev/kernel` フォルダのみがチェックアウトされ、ローカルリポジトリとリモートリポジトリがリンクされます。

 echo zh - cn / device - dev / kernel >> . git / info / sparse - checkout
git リモートでorigin を追加しますhttps://gitee.com/openharmony/docs.git

3. 検出コード

コードをチェックアウトするコマンドを続けて実行すると、チェックアウト結果が図のように表示されます。実際には、指定したディレクトリのみがチェックアウトされていることがわかります。

 git pull origin マスター

4.スパース検出を無効にする

すべてのファイルを取得する方法を見てみましょう。以下のコマンドを実行しました。結果は画像に示されています。

 echo "/*" > .git / info / sparse - チェックアウト
git 読み取り- ツリー- mu HEAD

スパースチェックアウトを完全に無効にするには、Git の core.sparseCheckout を false に設定し、.git/info/sparse-checkout ファイルを削除します。

5. `git sparse-checkout`コマンド

Gitの新しいバージョンでは、`git sparse-checkout`を直接使用してスパースチェックアウトを設定できます。Gitの最新バージョンのダウンロードアドレスはhttps://git-scm.com/downloadsです。`git sparse-checkout`コマンドについてはここでは詳しく説明しません。実際に試してみることですぐに使いこなせるでしょう。コマンドと実行結果は以下の通りです。

 mkdir my - ドキュメント
cd my - ドキュメント/
git 初期化
git sparse - チェックアウトinit
git sparse - チェックアウトを追加/ zh - cn / device - dev
git sparse - チェックアウトリスト
git リモートでorigin を追加しますhttps://gitee.com/openharmony/docs.git
git pull origin マスター

付録 - 参考文献:

https://git-scm.com/docs/git-sparse-checkout を参照してください。

詳細については、以下をご覧ください。

51CTOとHuaweiが共同で構築したHarmonyOSテクノロジーコミュニティ。

https://ost..com