threads / discuss / 24183

on pulling/cloning git notes

Subject: on pulling/cloning git notes

## tl;dr

5 messages between Jun 24, 2010 and Jun 24, 2010.

replies: 4people: 2as markdown or json

Christian MICHON· Jun 24, 2010, 08:22 UTC · lore
Hi list,

I've been playing recently with git notes and figured out how to push my notes to my central gitolite server, tweaking .git/config in this way (adding a push section):

[remote "gitolite"]
        url = gitolite:daat
        fetch = +refs/heads/*:refs/remotes/gitolite/*
        push = +refs/notes/*:refs/notes/*

When trying to to a 'git clone --mirror' from that same gitolite server, I was expecting to get back refs/notes, but I did not.

Did I miss something or git notes are actually not meant to be cloned/pulled?
-- 
Christian
--
http://detaolb.sourceforge.net/, a linux distribution for Qemu with Git inside !
Michael J Gruber· Jun 24, 2010, 09:48 UTC · re: Christian MICHON · lore

Re: on pulling/cloning git notes

Christian MICHON venit, vidit, dixit 24.06.2010 10:22:
Show 16 quoted lines
> Hi list,
> 
> I've been playing recently with git notes and figured out how to push
> my notes to my central gitolite server, tweaking .git/config in this
> way (adding a push section):
> 
> [remote "gitolite"]
>         url = gitolite:daat
>         fetch = +refs/heads/*:refs/remotes/gitolite/*
>         push = +refs/notes/*:refs/notes/*
> 
> When trying to to a 'git clone --mirror' from that same gitolite
> server, I was expecting to get back refs/notes, but I did not.
> 
> Did I miss something or git notes are actually not meant to be cloned/pulled?
> 

As you can see from the default "fetch" line above, "refs/heads" are fetched by default (when cloning, fetching etc.), but nothing else (well, besides some tags). You can set up an additional fetch refspec to get the notes also.

It's not done by default because it's up to you decide what to do with the notes. Sometimes, you want them to end up in "refs/notes" so that they are displayed by default. But maybe you want them in "refs/notes/remotes/gitolites" e.g. and display them only on request (--show-notes=remotes/gitolite), or merge them into your own notes.

Michael
Christian MICHON· Jun 24, 2010, 12:25 UTC · re: Michael J Gruber · lore

Re: on pulling/cloning git notes

On Thu, Jun 24, 2010 at 11:48 AM, Michael J Gruber <git@drmicha.warpmail.net> wrote:

> As you can see from the default "fetch" line above, "refs/heads" are
> fetched by default (when cloning, fetching etc.), but nothing else
> (well, besides some tags). You can set up an additional fetch refspec to
> get the notes also.

I'm actually doing a fresh clone elsewhere, using 'git clone --mirror gitolite:daat'.

I was expecting to grab everything from the remote refs, as in this
case my .git/config will look like this:
[remote "origin"]
        fetch = +refs/*:refs/*
        mirror = true
        url = gitolite:daat
Show 6 quoted lines
> It's not done by default because it's up to you decide what to do with
> the notes. Sometimes, you want them to end up in "refs/notes" so that
> they are displayed by default. But maybe you want them in
> "refs/notes/remotes/gitolites" e.g. and display them only on request
> (--show-notes=remotes/gitolite), or merge them into your own notes.
>

So the * in .git/config was misleading me. Instead I changed the fetch to this after the original clone, then performed an incremental fetch and it worked.

[remote "origin"]
        fetch = +refs/heads/*:refs/notes/*
        mirror = true
        url = gitolite:daat
Thanks for the hint, Michael!
-- 
Christian
--
http://detaolb.sourceforge.net/, a linux distribution for Qemu with Git inside !
Michael J Gruber· Jun 24, 2010, 13:16 UTC · re: Christian MICHON · lore

Re: on pulling/cloning git notes

Christian MICHON venit, vidit, dixit 24.06.2010 14:25:
Show 9 quoted lines
> On Thu, Jun 24, 2010 at 11:48 AM, Michael J Gruber
> <git@drmicha.warpmail.net> wrote:
>> As you can see from the default "fetch" line above, "refs/heads" are
>> fetched by default (when cloning, fetching etc.), but nothing else
>> (well, besides some tags). You can set up an additional fetch refspec to
>> get the notes also.
> 
> I'm actually doing a fresh clone elsewhere, using 'git clone --mirror
> gitolite:daat'.
You didn't say "--mirror" before ;)
Show 7 quoted lines
> 
> I was expecting to grab everything from the remote refs, as in this
> case my .git/config will look like this:
> [remote "origin"]
>         fetch = +refs/*:refs/*
>         mirror = true
>         url = gitolite:daat

Hmmh. I have notes in the standard "refs/notes/commits", push them into that same ref on the remote side (using an additional push refspec). When I "clone --mirror" that I do get them back in "refs/notes/commits" in the (bare) mirror repo.

Show 7 quoted lines
> [remote "origin"]
>         fetch = +refs/heads/*:refs/notes/*
>         mirror = true
>         url = gitolite:daat
> 
> Thanks for the hint, Michael!
> 
I'm glad it helped though I don't know why...
Did you push the notes into head refs?
Comparing the output of
git ls-remote gitolite:daat

to that of "git show-ref" in you local repos (the original one and the mirror) may clear things up quite a bit.

Cheers, Michael

Christian MICHON· Jun 24, 2010, 13:27 UTC · re: Michael J Gruber · lore

Re: on pulling/cloning git notes

On Thu, Jun 24, 2010 at 3:16 PM, Michael J Gruber <git@drmicha.warpmail.net> wrote:

Show 12 quoted lines
> Christian MICHON venit, vidit, dixit 24.06.2010 14:25:
>> On Thu, Jun 24, 2010 at 11:48 AM, Michael J Gruber
>> <git@drmicha.warpmail.net> wrote:
>>> As you can see from the default "fetch" line above, "refs/heads" are
>>> fetched by default (when cloning, fetching etc.), but nothing else
>>> (well, besides some tags). You can set up an additional fetch refspec to
>>> get the notes also.
>>
>> I'm actually doing a fresh clone elsewhere, using 'git clone --mirror
>> gitolite:daat'.
>
> You didn't say "--mirror" before ;)

yes I did... "When trying to to a 'git clone --mirror' from that same gitolite"...

Show 25 quoted lines
>
>>
>> I was expecting to grab everything from the remote refs, as in this
>> case my .git/config will look like this:
>> [remote "origin"]
>>         fetch = +refs/*:refs/*
>>         mirror = true
>>         url = gitolite:daat
>
> Hmmh. I have notes in the standard "refs/notes/commits", push them into
> that same ref on the remote side (using an additional push refspec).
> When I "clone --mirror" that I do get them back in "refs/notes/commits"
> in the (bare) mirror repo.
>
>> [remote "origin"]
>>         fetch = +refs/heads/*:refs/notes/*
>>         mirror = true
>>         url = gitolite:daat
>>
>> Thanks for the hint, Michael!
>>
>
> I'm glad it helped though I don't know why...
>
> Did you push the notes into head refs?

yes apparently I did. I thought it did help, I must have pushed the wrong way originally.

I'll fix that. Actually --mirror works fine and I'm actually getting the commit linked to the notes.

thanks for double checking.
-- 
Christian
--
http://detaolb.sourceforge.net/, a linux distribution for Qemu with Git inside !

← back to recent threads