😀

Gitを2.49.0に更新したら、ミラーレポジトリとしてcloneできなかった話

に公開

序文

Gitを2.49.0に更新したら、ミラーレポジトリとしてcloneできなかったという、お話です。(fatal: multiple updates for ref 'refs/tags/...' not allowed)

検索してでてきた次のお話とは、別のお話です。
Gitを2.21.0にアップデートしたらcloneできなくなった話(fatal: multiple updates for ref 'refs/remotes/origin/master' not allowed) #homebrew - Qiita

上記のケースでは

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*

といった設定がある場合に、

git config --global --unset remote.origin.fetch

などで、上記設定を取り除けばいいという、解決策(回避策?)が案内されていたようです。2019年ころのお話でした。
今回のケースは上記ケースと異なりgit 2.49.0でmirrorオプションとbranchオプションを合わせて指定している場合に、cloneが止まってしまうケースがあるというお話です。

実例として、Fcitx-Mozcのレポジトリで説明します。

git clone --filter=tree:0 --mirror --branch fcitx https://github.com/fcitx/mozc.git fcitx-mozc
fatal: multiple updates for ref 'refs/tags/fcitx-mozc-1.10.1390.102.1' not allowed

上記のようなエラーが出て処理が止まります。

ちなみにbareオプションだとエラーがでず、cloneできました。(2.49.0よりも前のgitだと、mirrorオプションを用いた上記コマンドでcloneできていました。)

git clone --filter=tree:0 --bare --branch fcitx https://github.com/fcitx/mozc.git fcitx-mozc

回避策

git 2.49.0でmirrorオプションでcloneする場合、branchを指定したい場合には、--single-branchオプションも追加しましょう。または、そもそもbranch指定を行わないというのが、今回の回避策になります。

git clone --filter=tree:0 --mirror --branch fcitx --single-branch https://github.com/fcitx/mozc.git fcitx-mozc
git clone --filter=tree:0 --mirror https://github.com/fcitx/mozc.git fcitx-mozc

Discussion