threads / discuss / 13483

git-bundle question.

Subject: git-bundle question.

## tl;dr

3 messages between May 11, 2008 and May 12, 2008.

replies: 2people: 2as markdown or json

Govind Salinas· May 11, 2008, 22:11 UTC · lore
Hi,

I am writing my wrapper over git bundle and I noticed that the "SPECIFYING REFERENCES" section says that the it will only bundle things that end in something git-show-ref can find.

I can probably work around this by silently creating a tag doing the bundle and deleting the tag, but I want to know why this restriction is in there in the first place? If there is a good reason for it then I will probably just add this info to the documentation.

Thanks, Govind.

Junio C Hamano· May 12, 2008, 00:28 UTC · re: Govind Salinas · lore

Re: git-bundle question.

"Govind Salinas" <govind@sophiasuchtig.com> writes:
Show 9 quoted lines
> I am writing my wrapper over git bundle and I noticed that the
> "SPECIFYING REFERENCES" section says that the it will only
> bundle things that end in something git-show-ref can find.
>
> I can probably work around this by silently creating a tag
> doing the bundle and deleting the tag, but I want to know why
> this restriction is in there in the first place?  If there is a good
> reason for it then I will probably just add this info to the
> documentation.

Because bundle is not just a random collection of objects, a tarball of your .git/objects/. Instead, it is a (partial) history that leads to a particular (set of) versions.

Think of it as what "git fetch $somewhere $that_branch" could give you. It is not giving you just a collection of random objects, but you are choosing from the endpoint the particular repository ($somewhere) is offering you.

When you publish your history to be fetched over the network (or locally for that matter), you do not just put bunch of objects there. You give branches to mark where the histories end. It's the same deal with bundles, and the only difference is the transfer may go over sneakernet.

Govind Salinas· May 12, 2008, 01:19 UTC · lore

Re: git-bundle question.

forgot to reply to list

On Sun, May 11, 2008 at 8:17 PM, Govind Salinas <govind@sophiasuchtig.com> wrote:

Show 50 quoted lines
> On Sun, May 11, 2008 at 7:28 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> "Govind Salinas" <govind@sophiasuchtig.com> writes:
>>
>>> I am writing my wrapper over git bundle and I noticed that the
>>> "SPECIFYING REFERENCES" section says that the it will only
>>> bundle things that end in something git-show-ref can find.
>>>
>>> I can probably work around this by silently creating a tag
>>> doing the bundle and deleting the tag, but I want to know why
>>> this restriction is in there in the first place?  If there is a good
>>> reason for it then I will probably just add this info to the
>>> documentation.
>>
>> Because bundle is not just a random collection of objects, a tarball of
>> your .git/objects/.  Instead, it is a (partial) history that leads to a
>> particular (set of) versions.
>>
>> Think of it as what "git fetch $somewhere $that_branch" could give you.
>> It is not giving you just a collection of random objects, but you are
>> choosing from the endpoint the particular repository ($somewhere) is
>> offering you.
>>
>> When you publish your history to be fetched over the network (or locally
>> for that matter), you do not just put bunch of objects there.  You give
>> branches to mark where the histories end.  It's the same deal with
>> bundles, and the only difference is the transfer may go over sneakernet.
>>
>>
>
> Sure, I understand that.  However, I can use a tag to create a bundle
> that does not go to an endpoint.  I can also advance that branch to
> a later commit by whatever mechanism (say committing something)
> and then the bundle no longer points to the endpoint, it points to
> the middle somewhere.  Git, from what I have seen, likes to treat
> HEADs as just another commit and it is a bit surprising to see this
> particular limitation here.  I see this as kind of like git-push where
> the person who has the commits is specifying them, and there you
> can specify any commit.  Although pull/fetch have similar
> limitations, so perhaps it is not so surprising.
>
> If I wanted to share a patch series via bundle and the patches I
> wanted went from HEAD~10..HEAD~5 then I *could* checkout -b
> HEAD~5 or tag HEAD~5, but I do not see an advantage to doing so.
>
> I don't really use bundles, so it's not a big deal to me.  I just
> thought I would ask to make sure I wasn't going to break something.
>
> Thanks,
> Govind.
>

← back to recent threads