Re: Bad refspec messes up bundle.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 19, 2018, 17:36 UTC
- Message-ID
- <xmqq370wvugk.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <CAO+-ZX_-COVpzqoAZLRGu4mvLMkLYiR3y7rkCtwmnvJ8kA7txQ@mail.gmail.com>
Luciano Joublanc <ljoublanc@dinogroup.eu> writes:
Show 32 quoted lines
> Yesterday I created a git bundle as best as I can remember like this > > git bundle save chunk chunk.bundle --all master > > Note the 'master' I added accidentally at the end - this was a user > error but still the bundle was created. > > When I tried to clone this, I get > > ~\local\src> git clone 'G:\My Drive\chunk.bundle' fs2-columns > Cloning into 'fs2-columns'... > Receiving objects: 100% (31/31), done. > Resolving deltas: 100% (5/5), done. > fatal: multiple updates for ref 'refs/remotes/origin/master' not allowed. > ~\local\src> git bundle verify chunk.bundle > The bundle contains these 3 refs: > 3c804437a5f8537db1bfb5d09b7bff4f9950605e refs/heads/master > 3c804437a5f8537db1bfb5d09b7bff4f9950605e HEAD > 3c804437a5f8537db1bfb5d09b7bff4f9950605e refs/heads/master > The bundle records a complete history. > chunk.bundle is okay > > After trying a couple of things, I finally managed to clone it using > > ~\local\src> git clone -b master --single-branch .\chunk.bundle fs2-columns > > i.e. the '--single-branch' option saved me. > > Is this a bug? Should bundle allow providing multiple refspecs when > `--all` is provided? I admit this was clearly a case of 'caveat > emptor', but shouldn't this be disallowed (i.e. is there any situation > when this is useful?)
Thanks for a report.
Just like a remote repository that reports the same ref more than once in its initial advertisement (i.e. "git ls-remote $remote" gives duplicate entries), a bundle file that records the same ref more than once *is* a bug, I would think.
A "git bundle create" command that creates such a bundle file shouldn't. It is not very useful to diagnose it as an error; it probably makes more sense to dedup the refs instead when writing the bundle file. Of course, we should abort with an error *if* the code ever tries to store the same ref twice with different object name (i.e. attempt to dedup, in vain).
Also, "git clone" from such a bundle file (or for that matter, a remote repository that advertises the same ref twice) probably should do a similar deduping, with a warning message.