この質問は重複しているか、以前の多くの質問 (および同様の主題を扱った数十のブログ投稿) のように思われますが、スクリプトを作成できるアプローチを探していることを認識しておく必要があります。
- すべてのブランチとタグはマージされるはずです
- 重複を避けるために、ブランチとタグにはプレフィックスを付ける必要があります
- 新しいサブフォルダーにインポートするため、ファイルが重複することはありません。
- 増分マージ プロセス: 一度に 1 つのリポジトリでゆっくりと monorepo セットアップに移行する予定であるため、後で新しいリポジトリをマージできるようにします。
私が構築しようとしているスクリプトは、次のように動作するはずです。
./merge-repo monorepo/subdir/foo git@github.com:example/foo.git
これは、ターゲット リポジトリ (monorepo) がmonorepo/
フォルダー内で既に複製されており、ローカルの変更がないことを前提としています。
たとえば、foo.git に 2 つのブランチmaster
とdevelop
1 つのタグ名がある場合、マージを実行した後、 monorepo リポジトリ内にブランチとタグv1.0
が表示されることを期待します。foo-master
foo-develop
foo-v1.0
何十もの記事 (またはスクリプト) を読みましたが、これまでのところ、これを取得する方法を説明する記事を見つけることができませんでした。
明確化
- foo.git レポジトリのルート内に README.txt がある場合、このファイルは .txt 内にあるはずです
monorepo/subdir/foo/README.txt
。これらが大きなレポのサブディレクトリ(以前は存在しなかったサブディレクトリ)になる場合、競合することなくリポジトリをマージできる唯一のアプローチです。
アップデート
問題が解決したとはまだ言えませんが、ソース リポジトリにパッチを適用した後にマージを実行することになっているこの bash スクリプトを作成することになりました。それを見てください https://github.com/ssbarnea/monorepo/blob/master/git-monorepo-add.sh
PS。多くのリポジトリでテストされた信頼できるソリューションが得られたら、すぐに適切な回答を返します。