* how to fetch entire heirarchy of refs from a remote?
@ 2016-01-07 23:06 Jacob Keller
2016-01-07 23:15 ` Junio C Hamano
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Jacob Keller @ 2016-01-07 23:06 UTC (permalink / raw)
To: Git mailing list
Hi,
Say I have a repository which has a series of refs in a heirarchy such
as a gerrit repository with changes specified something like:
refs/changes/96/55596/3
refs/changes/96/55596/4
refs/changes/96/57496/1
refs/changes/96/57496/2
refs/changes/96/69796/1
refs/changes/96/69796/2
refs/changes/96/71696/1
refs/changes/96/71696/2
refs/changes/97/40197/1
refs/changes/97/40197/2
refs/changes/97/40197/3
refs/changes/97/40197/4
...
refs/changes/97/71697/2
refs/changes/97/71697/3
refs/changes/98/47298/1
refs/changes/98/47298/2
refs/changes/98/47298/3
refs/changes/98/57298/1
refs/changes/98/57298/2
refs/changes/98/73598/1
refs/changes/99/44099/1
refs/changes/99/69299/1
Is it possible to specify a refspec such that all of these will be
fetched? I tried doing
+refs/changes/*:refs/changes/*
but this doesn't work since the * can only be one portion of a refspec
The problem is that I would like to be able to pull all of these
changes in a git mirror so that I can reduce network traffic I use to
the gerrit server, by updating my local copy once and using the local
copy on the other tasks I need. This is necessary since the gerrit
server is (a) far away and (b) closes my connection when I have too
many requests.
But, git clone --mirror and git fetch have failed to pull every ref,
and only end up with heads and tags.
Regards,
Jake
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:06 how to fetch entire heirarchy of refs from a remote? Jacob Keller
@ 2016-01-07 23:15 ` Junio C Hamano
2016-01-07 23:23 ` Jacob Keller
2016-01-07 23:25 ` Jacob Keller
2016-01-07 23:36 ` Jacob Keller
2016-01-07 23:39 ` Jacob Keller
2 siblings, 2 replies; 8+ messages in thread
From: Junio C Hamano @ 2016-01-07 23:15 UTC (permalink / raw)
To: Jacob Keller; +Cc: Git mailing list
Jacob Keller <jacob.keller@gmail.com> writes:
> refs/changes/98/47298/3
> refs/changes/98/57298/1
> refs/changes/98/57298/2
> refs/changes/98/73598/1
> refs/changes/99/44099/1
> refs/changes/99/69299/1
>
>
> Is it possible to specify a refspec such that all of these will be
> fetched? I tried doing
>
> +refs/changes/*:refs/changes/*
>
> but this doesn't work since the * can only be one portion of a refspec
I am not sure if I follow. With refs/heads/*:refs/remotes/origin/*
(e.g. following git://github.com/gitster/git for example), I am
reasonably sure you would get my refs/heads/jk/notes-dwim-doc and
other topics you authored without the slash between jk and
notes-dwim-doc getting in the way.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:15 ` Junio C Hamano
@ 2016-01-07 23:23 ` Jacob Keller
2016-01-07 23:25 ` Jacob Keller
1 sibling, 0 replies; 8+ messages in thread
From: Jacob Keller @ 2016-01-07 23:23 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git mailing list
On Thu, Jan 7, 2016 at 3:15 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Jacob Keller <jacob.keller@gmail.com> writes:
>
>> refs/changes/98/47298/3
>> refs/changes/98/57298/1
>> refs/changes/98/57298/2
>> refs/changes/98/73598/1
>> refs/changes/99/44099/1
>> refs/changes/99/69299/1
>>
>>
>> Is it possible to specify a refspec such that all of these will be
>> fetched? I tried doing
>>
>> +refs/changes/*:refs/changes/*
>>
>> but this doesn't work since the * can only be one portion of a refspec
>
> I am not sure if I follow. With refs/heads/*:refs/remotes/origin/*
> (e.g. following git://github.com/gitster/git for example), I am
> reasonably sure you would get my refs/heads/jk/notes-dwim-doc and
> other topics you authored without the slash between jk and
> notes-dwim-doc getting in the way.
>
>
That appears to be correct, but.. why doesn't:
git fetch origin +refs/changes/*:refs/changes/*
seem to anything at all?
Ideally this owuld fetch all the remote refs in refs/changes and stick
them into my refs, but it appears to do nothing at all.
Regards,
Jake
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:15 ` Junio C Hamano
2016-01-07 23:23 ` Jacob Keller
@ 2016-01-07 23:25 ` Jacob Keller
1 sibling, 0 replies; 8+ messages in thread
From: Jacob Keller @ 2016-01-07 23:25 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git mailing list
On Thu, Jan 7, 2016 at 3:15 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Jacob Keller <jacob.keller@gmail.com> writes:
>
>> refs/changes/98/47298/3
>> refs/changes/98/57298/1
>> refs/changes/98/57298/2
>> refs/changes/98/73598/1
>> refs/changes/99/44099/1
>> refs/changes/99/69299/1
>>
>>
>> Is it possible to specify a refspec such that all of these will be
>> fetched? I tried doing
>>
>> +refs/changes/*:refs/changes/*
>>
>> but this doesn't work since the * can only be one portion of a refspec
>
> I am not sure if I follow. With refs/heads/*:refs/remotes/origin/*
> (e.g. following git://github.com/gitster/git for example), I am
> reasonably sure you would get my refs/heads/jk/notes-dwim-doc and
> other topics you authored without the slash between jk and
> notes-dwim-doc getting in the way.
>
>
Infact, even running
git fetch origin +refs/changes/98/73598/1:refs/changes/98/73598/1
does not end up placing anything into refs/changes?
Is it because it happens to not be known by git? That seems rather
short sighted...
Regards,
Jake
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:06 how to fetch entire heirarchy of refs from a remote? Jacob Keller
2016-01-07 23:15 ` Junio C Hamano
@ 2016-01-07 23:36 ` Jacob Keller
2016-01-07 23:45 ` Junio C Hamano
2016-01-07 23:39 ` Jacob Keller
2 siblings, 1 reply; 8+ messages in thread
From: Jacob Keller @ 2016-01-07 23:36 UTC (permalink / raw)
To: Git mailing list
On Thu, Jan 7, 2016 at 3:06 PM, Jacob Keller <jacob.keller@gmail.com> wrote:
>
> But, git clone --mirror and git fetch have failed to pull every ref,
> and only end up with heads and tags.
>
> Regards,
> Jake
It turns out that it *does* pull the refs, but they don't appear to
show up inside the "refs" folder.. is there a reason for this?
ie:
ls .git/refs/changes
shows nothing,but
git ls-remote file:///path/to/repo
does show them? Any particular reason for why this is? I am confused
why refs aren't showing up inside the refs folder...
Regards,
Jake
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:06 how to fetch entire heirarchy of refs from a remote? Jacob Keller
2016-01-07 23:15 ` Junio C Hamano
2016-01-07 23:36 ` Jacob Keller
@ 2016-01-07 23:39 ` Jacob Keller
2 siblings, 0 replies; 8+ messages in thread
From: Jacob Keller @ 2016-01-07 23:39 UTC (permalink / raw)
To: Git mailing list
On Thu, Jan 7, 2016 at 3:06 PM, Jacob Keller <jacob.keller@gmail.com> wrote:
> Hi,
>
> Say I have a repository which has a series of refs in a heirarchy such
> as a gerrit repository with changes specified something like:
>
> refs/changes/96/55596/3
> refs/changes/96/55596/4
> refs/changes/96/57496/1
> refs/changes/96/57496/2
> refs/changes/96/69796/1
> refs/changes/96/69796/2
> refs/changes/96/71696/1
> refs/changes/96/71696/2
> refs/changes/97/40197/1
> refs/changes/97/40197/2
> refs/changes/97/40197/3
> refs/changes/97/40197/4
> ...
> refs/changes/97/71697/2
> refs/changes/97/71697/3
> refs/changes/98/47298/1
> refs/changes/98/47298/2
> refs/changes/98/47298/3
> refs/changes/98/57298/1
> refs/changes/98/57298/2
> refs/changes/98/73598/1
> refs/changes/99/44099/1
> refs/changes/99/69299/1
>
>
> Is it possible to specify a refspec such that all of these will be
> fetched? I tried doing
>
> +refs/changes/*:refs/changes/*
>
> but this doesn't work since the * can only be one portion of a refspec
>
> The problem is that I would like to be able to pull all of these
> changes in a git mirror so that I can reduce network traffic I use to
> the gerrit server, by updating my local copy once and using the local
> copy on the other tasks I need. This is necessary since the gerrit
> server is (a) far away and (b) closes my connection when I have too
> many requests.
>
> But, git clone --mirror and git fetch have failed to pull every ref,
> and only end up with heads and tags.
>
> Regards,
> Jake
So, sorry for the list spam. Things work correctly, it just is using
packed-refs, which is a feature I wasn't aware of :) Git already did
what I expected but in a way I did not, so I was very confused.
Regards,
Jake
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:36 ` Jacob Keller
@ 2016-01-07 23:45 ` Junio C Hamano
2016-01-08 16:30 ` Jacob Keller
0 siblings, 1 reply; 8+ messages in thread
From: Junio C Hamano @ 2016-01-07 23:45 UTC (permalink / raw)
To: Jacob Keller; +Cc: Git mailing list
Jacob Keller <jacob.keller@gmail.com> writes:
> On Thu, Jan 7, 2016 at 3:06 PM, Jacob Keller <jacob.keller@gmail.com> wrote:
>>
>> But, git clone --mirror and git fetch have failed to pull every ref,
>> and only end up with heads and tags.
>>
>> Regards,
>> Jake
>
> It turns out that it *does* pull the refs, but they don't appear to
> show up inside the "refs" folder.. is there a reason for this?
>
> ie:
>
> ls .git/refs/changes
>
> shows nothing,but
>
> git ls-remote file:///path/to/repo
>
> does show them? Any particular reason for why this is? I am confused
> why refs aren't showing up inside the refs folder...
Does
git for-each-ref refs/changes/
in your local resulting repository show them?
There is nothing that says "ls -R .git/refs/" is the way to
enumerate available refs (in fact it is a _wrong_ way that is
guaranteed to give you wrong results).
Hint: .git/packed-refs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: how to fetch entire heirarchy of refs from a remote?
2016-01-07 23:45 ` Junio C Hamano
@ 2016-01-08 16:30 ` Jacob Keller
0 siblings, 0 replies; 8+ messages in thread
From: Jacob Keller @ 2016-01-08 16:30 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git mailing list
On Thu, Jan 7, 2016 at 3:45 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> does show them? Any particular reason for why this is? I am confused
>> why refs aren't showing up inside the refs folder...
>
> Does
>
> git for-each-ref refs/changes/
>
> in your local resulting repository show them?
>
> There is nothing that says "ls -R .git/refs/" is the way to
> enumerate available refs (in fact it is a _wrong_ way that is
> guaranteed to give you wrong results).
>
> Hint: .git/packed-refs
>
Yep I figured that out :) Now I know better!
Regards,
Jake
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-01-08 16:31 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-07 23:06 how to fetch entire heirarchy of refs from a remote? Jacob Keller
2016-01-07 23:15 ` Junio C Hamano
2016-01-07 23:23 ` Jacob Keller
2016-01-07 23:25 ` Jacob Keller
2016-01-07 23:36 ` Jacob Keller
2016-01-07 23:45 ` Junio C Hamano
2016-01-08 16:30 ` Jacob Keller
2016-01-07 23:39 ` Jacob Keller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.