オーバーレイマウントを使用して複数のディレクトリを他のサブディレクトリと結合する方法は?

オーバーレイマウントを使用して複数のディレクトリを他のサブディレクトリと結合する方法は?

さまざまなソースツリーに配置された複数のGitリポジトリをダウンロードしました。

  1. repoDirs1(ベンダーを含むサブディレクトリを含む)
  2. repoDirs2(ベンダーを含むサブディレクトリを含む)
  3. 特別買戻し1
  4. 特別買戻し2

動作するソースツリーを取得するには、次の手順を実行する必要があります。

1. cp -rp repoDirs2/* repoDirs1/
2. cp -rp specialRepos1/vendor/* repoDirs1/vendor/
3. cp -rp specialRepos2/vendor/* repoDirs1/vendor/

これは機能しますが、元のrepoDirs1ソースツリーを変更し、repoコマンドを使用してそれを管理するのが難しくなります。

検索してみると、マウントにオーバーレイオプションがあることがわかりました。しかし、いくつかの例を読んだ後でも、問題を解決するために正しいインストールコマンドシーケンスを作成する方法はまだわかりません。 overlayfsknownまたはその他の誤ったオプションエラーが発生します。

誰もが明確な例を助けることができますか?ありがとうございます。 Ubuntu 20.04を使用しています

答え1

将来の読者は注意してください。 この質問には、多くのサブディレクトリを含む2つのディレクトリをマージする必要があります。一般的なgit操作には使用しないでください。これを行うには、通常.gitignoreファイルを試してください。子サブモジュール


2つのディレクトリを1つの場所にマージするには、重複するファイルがある場合でも、単純なoverridefsマウントを使用できます。要求された状況では、これは読み取り専用オーバーレイで実行するのが最善です。読み書きするには、変更されたすべてのファイルを別々のディレクトリに保存します。あなたが探しているものが一致する可能性はほとんどありません。

読み取り専用オーバーライドを作成するには、upper以下を指定しないでくださいworkdir

mount -t overlay overlay -o lowerdir=specialRepos1/vendor/:specialRepos2/vendor/ repoDirs1/vendor/

Archlinuxにはこの機能の良い説明があります:

https://wiki.archlinux.org/index.php/Overlay_filesystem

関連情報