subtree push出来ない

現在開発している案件では、共通処理用のリポジトリを用意し、それを各システムのリポジトリ内でsubtreeとして管理するようにしています。
その時に発生したエラーについてもメモ書きです。

subtree pushできない


出来ないというのは正しい表現ではなく、実際にはpushは出来ました。
が、pushしたはずのブランチがすぐに削除されます。



何故?


先ほどのエラーの fatal: bad object 1a42f27521841710a4facb5082d80939c12ac0c6 からは、「1a42f27521841710a4facb5082d80939c12ac0c6のコミットが見つからない」のだろうと推測出来ます。

この1a42f27521841710a4facb5082d80939c12ac0c6のコミットはどこにあるのでしょう?

取り込まれてないだけじゃ...


commonのリモートリポジトリに対象のコミットがありました!
単純にsubtree pushしたいsubtreeに、リモートリポジトリの変更が取り込まれていないだけのように見えます。
subtree mergeで取り込んで、もう一度subtree pushしてみると...



ブランチが削除されずにsubtree push出来ました!

subtree mergeしよう


今回のエラーから得た教訓は、「subtree pushする前にsubtree mergeで最新のリポジトリの反映を取り込もう」ということです。
もし、皆さんも似たような現象に悩まされるような時があればやってみてくださいね。

コメント

このブログの人気の投稿

ElasticIPを複数利用する時の注意

タスクの実行結果をwhenで指定するならcheck_modeつける

EC2にNameをつける