1

プロジェクトでベンダー リポジトリを管理するために git-subtree (https://github.com/apenwarr/git-subtree) を使用しています。

しばらく前に、プロジェクトのレイアウトを作り直しました。その一部には、一部のベンダー コードを削除し、ベンダー リポジトリの新しいコピーから git-subtree を使用して再読み込みする作業が含まれていました。ベンダー リポジトリの新しいコピーは同じコードでしたが、ゼロから再作成したため、共通のコミットはありませんでした。

関連するコミットは次のとおりです(下から上に読んでください):

commit df47ba0d6437737473aba206fdc9f2b902fbb073
Merge: 4bc6a27 80b6bb7
Author: User <user@user.com>
Date:   Fri Dec 2 01:48:30 2011 -0500

    Merge commit '80b6bb7ae01fdda2fe7e0c545004136724cbf059' as 'External/Libraries/stlsoft'

commit 80b6bb7ae01fdda2fe7e0c545004136724cbf059
Author: User <user@user.com>
Date:   Fri Dec 2 01:48:30 2011 -0500

    Squashed 'External/Libraries/stlsoft/' content from commit 03149e3

    git-subtree-dir: External/Libraries/stlsoft
    git-subtree-split: 03149e3a4c3289b5a88fc3f7ae17fb11c44c4d68

# Repo containing 6324cb1724fcdf87294b2e4f438dedf5920a3156 is deleted, External/Libraries/stlsoft 
# is deleted and re-'git subtree add'ed from a new repo in the commits above.

commit e235b6c46d10b83c56d5c9f70d2b00df1137fbb3
Merge: 98ee319 79b7a31
Author: User <user@user.com>
Date:   Mon Apr 11 16:09:54 2011 -0400

    Merge commit '79b7a31fe4bc2d5beaca64cd6be0be4d0c971e4a' as 'External/Libraries/stlsoft'

commit 79b7a31fe4bc2d5beaca64cd6be0be4d0c971e4a
Author: User <user@user.com>
Date:   Mon Apr 11 16:09:54 2011 -0400

    Squashed 'External/Libraries/stlsoft/' content from commit 6324cb1

    git-subtree-dir: External/Libraries/stlsoft
    git-subtree-split: 6324cb1724fcdf87294b2e4f438dedf5920a3156

ここで、ベンダー リポジトリ (03149e3a4c3289b5a88fc3f7ae17fb11c44c4d68 を含む「新しい」リポジトリ) に 'git サブツリー プッシュ' しようとすると、次のエラーが発生します。

$ git subtree push -P "External/Libraries/stlsoft/" /f/vendor/stlsoft mod2
git push using:  f:/vendor/stlsoft mod2
fatal: bad object 6324cb1724fcdf87294b2e4f438dedf5920a3156
Couldn't push, 'git subtree split' failed.

git-subtree-dir は指定されたプレフィックスと一致しますが、コミット 6324cb1724fcdf87294b2e4f438dedf5920a3156 がなくなり、そのレポが存在しないためフェッチできません。

これを修正する方法に関する推奨事項はありますか? 現在、2 つのオプションを確認できます。 1. 新しいディレクトリの下に再度追加します (原則として、これを行いたくありません)。2.破損の原因となっている以前のコミットのサブツリー データを手動で消去します (一般的にこれを行うことはお勧めしませんが、このレポの他のコピーがあまりないため、この場合は回避できると思います)。 .

4

0 に答える 0