Home » Eclipse Projects » EGit / JGit » info/refs and ^{} 
| info/refs and ^{} [message #6786] | 
Sat, 09 May 2009 19:23   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Originally posted by: alex_blewitt.nospam.yahoo.com 
 
I'm working on reproducing the info/refs from a test git repository, and I am 
missing some ^{} entries: 
 
6db9c2ebf75590eef973081736730a9ea169a0c4    refs/tags/A 
17768080a2318cd89bba4c8b87834401e2095703    refs/tags/B 
d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864    refs/tags/B^{} <- missing this 
032c063ce34486359e3ee3d4f9e5c225b9e1a4c2    refs/tags/B10th 
d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864    refs/tags/B10th^{} <- missing this 
 
I can see these come from lines in the packed-refs file, but when using 
Repository.getAllRefs() these aren't listed. Is there anything I can do to get 
these from Repository, or do I have to parse the contents of packed-refs to 
find out? 
 
Alex
 |  
 |  
  |  
| Re: info/refs and ^{} [message #6793 is a reply to message #6786] | 
Sat, 09 May 2009 19:42    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Originally posted by: alex_blewitt.nospam.yahoo.com 
 
Alex Blewitt wrote: 
> I can see these come from lines in the packed-refs file, but when using 
> Repository.getAllRefs() these aren't listed. Is there anything I can do to 
get 
> these from Repository, or do I have to parse the contents of packed-refs to 
> find out? 
 
As a follow-up, if I use Repository.getAllRefsByPeeledObjectId, I can find 
some entries like this: 
 
 AnyObjectId[d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864]=[Ref[r efs/tags/B5th=efee 
904c794b943a06931c76c576dd552212e8bc], 
  Ref[refs/tags/B7th=a773cd2d9dbca00d08793dac0d7002a49f0428c0] , 
 
However, I don't understand if this is the right one to use to generate out 
(say) B5th^{} with the parent reference. In addition, there are some entries 
(like fd608fbe625a2b456d9f15c2b1dc41f252057dd7 
refs/tags/spearce-gpg-pub^{}) which might be from a single reference in this 
map: 
 
 AnyObjectId[fd608fbe625a2b456d9f15c2b1dc41f252057dd7]=[Ref[r efs/tags/spearce-g 
pg-pub=8bbde7aacf771a9afb6992434f1ae413e010c6d8]] 
 
 
However, I don't understand why I don't see other entries in there, like: 
 
 AnyObjectId[d0114ab8ac326bab30e3a657a0397578c5a1af88]=[Ref[r efs/heads/e=d0114a 
b8ac326bab30e3a657a0397578c5a1af88]] 
 
 
If there were a rule, like 'only print it out for those which have two or 
more' then I could understand how to generate them; but given I don't know why 
I see spearce-gpg-pub^{} but not e^{} in the info/refs file. 
 
Alex
 |  
 |  
  |   |  
| Re: info/refs and ^{} [message #6807 is a reply to message #6800] | 
Sun, 10 May 2009 07:41    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Originally posted by: alex_blewitt.nospam.yahoo.com 
 
>Robin Rosenberg wrote: 
>> Alex Blewitt wrote: 
>> 
>> I can see these come from lines in the packed-refs file, but when using 
>> Repository.getAllRefs() these aren't listed. Is there anything I can do to 
> B^{} is the peeled refs, i.e. the object a tag refers to 
> 
>> get these from Repository, or do I have to parse the contents of 
>> packed-refs to find out? 
> 
> Repository has a peel method. 
> 
> peeledref = repo.peel(ref); // null if problem. May be same as ref 
> peeledid = peeled.getPeeledObjectId(); // null if not a tag 
 
Excellent! I can now dump out the same format for the info/refs, with the 
possible exception of HEAD. If I generate the list myself for egit, I get: 
 
baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31    HEAD 
baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31    refs/heads/master 
9f0e280a3bada33978b2c0766886a25cd16994b4    refs/remotes/origin/master 
3c064161d4568dd9cf3d76c0921a19ef1bc280b6    refs/remotes/origin/stable 
8bbde7aacf771a9afb6992434f1ae413e010c6d8    refs/tags/spearce-gpg-pub 
fd608fbe625a2b456d9f15c2b1dc41f252057dd7    refs/tags/spearce-gpg-pub^{} 
 
(that has local commits in my HEAD, of course). If I look at the entries 
generated by git update-server-info, I get: 
 
baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31        refs/heads/master 
9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/HEAD 
9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/master 
3c064161d4568dd9cf3d76c0921a19ef1bc280b6        refs/remotes/origin/stable 
8bbde7aacf771a9afb6992434f1ae413e010c6d8        refs/tags/spearce-gpg-pub 
fd608fbe625a2b456d9f15c2b1dc41f252057dd7        refs/tags/spearce-gpg-pub^{} 
 
I can filter out the HEAD (which seems to be put in there manaully by 
readRefs()) 
 
        try { 
            final Ref r = readRefBasic(Constants.HEAD, 0); 
            if (r != null && r.getObjectId() != null) 
                avail.put(Constants.HEAD, r); 
        } catch (IOException e) { 
 
But I don't know where/how the refs/remotes/origin/HEAD is being put in (or, 
if it's something that is to be concerned about). Obviously I'd like to be 
equivalent to what server-update-info is doing if possible; but it's 
measurable progress, at least. 
 
Alex
 |  
 |  
  |  
| Re: info/refs and ^{} [message #6813 is a reply to message #6807] | 
Sun, 10 May 2009 09:22   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Alex Blewitt wrote: 
> (that has local commits in my HEAD, of course). If I look at the entries 
> generated by git update-server-info, I get: 
>  
> baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31        refs/heads/master 
> 9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/HEAD 
> 9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/master 
> 3c064161d4568dd9cf3d76c0921a19ef1bc280b6        refs/remotes/origin/stable 
> 8bbde7aacf771a9afb6992434f1ae413e010c6d8        refs/tags/spearce-gpg-pub 
> fd608fbe625a2b456d9f15c2b1dc41f252057dd7        
> refs/tags/spearce-gpg-pub^{} 
>  
> I can filter out the HEAD (which seems to be put in there manaully by 
> readRefs()) 
>  
>         try { 
>             final Ref r = readRefBasic(Constants.HEAD, 0); 
>             if (r != null && r.getObjectId() != null) 
>                 avail.put(Constants.HEAD, r); 
>         } catch (IOException e) { 
>  
> But I don't know where/how the refs/remotes/origin/HEAD is being put in 
> (or, if it's something that is to be concerned about). Obviously I'd like 
> to be equivalent to what server-update-info is doing if possible; but it's 
> measurable progress, at least. 
 
For now. don't worry. It seems like a bug in the refs reading code in jgit. 
 
-- robin
 |  
 |  
  |  
| Re: info/refs and ^{} [message #572751 is a reply to message #6786] | 
Sat, 09 May 2009 19:42   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Alex Blewitt wrote: 
> I can see these come from lines in the packed-refs file, but when using 
> Repository.getAllRefs() these aren't listed. Is there anything I can do to 
get 
> these from Repository, or do I have to parse the contents of packed-refs to 
> find out? 
 
As a follow-up, if I use Repository.getAllRefsByPeeledObjectId, I can find 
some entries like this: 
 
 AnyObjectId[d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864]=[Ref[r efs/tags/B5th=efee 
904c794b943a06931c76c576dd552212e8bc], 
  Ref[refs/tags/B7th=a773cd2d9dbca00d08793dac0d7002a49f0428c0] , 
 
However, I don't understand if this is the right one to use to generate out 
(say) B5th^{} with the parent reference. In addition, there are some entries 
(like fd608fbe625a2b456d9f15c2b1dc41f252057dd7 
refs/tags/spearce-gpg-pub^{}) which might be from a single reference in this 
map: 
 
 AnyObjectId[fd608fbe625a2b456d9f15c2b1dc41f252057dd7]=[Ref[r efs/tags/spearce-g 
pg-pub=8bbde7aacf771a9afb6992434f1ae413e010c6d8]] 
 
 
However, I don't understand why I don't see other entries in there, like: 
 
 AnyObjectId[d0114ab8ac326bab30e3a657a0397578c5a1af88]=[Ref[r efs/heads/e=d0114a 
b8ac326bab30e3a657a0397578c5a1af88]] 
 
 
If there were a rule, like 'only print it out for those which have two or 
more' then I could understand how to generate them; but given I don't know why 
I see spearce-gpg-pub^{} but not e^{} in the info/refs file. 
 
Alex
 |  
 |  
  |  
| Re: info/refs and ^{} [message #572769 is a reply to message #6786] | 
Sun, 10 May 2009 06:46   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Alex Blewitt wrote: 
 
> I'm working on reproducing the info/refs from a test git repository, and I 
> am missing some ^{} entries: 
>  
> 6db9c2ebf75590eef973081736730a9ea169a0c4    refs/tags/A 
> 17768080a2318cd89bba4c8b87834401e2095703    refs/tags/B 
> d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864    refs/tags/B^{} <- missing this 
> 032c063ce34486359e3ee3d4f9e5c225b9e1a4c2    refs/tags/B10th 
> d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864    refs/tags/B10th^{} <- missing 
> this 
>  
> I can see these come from lines in the packed-refs file, but when using 
> Repository.getAllRefs() these aren't listed. Is there anything I can do to 
B^{} is the peeled refs, i.e. the object a tag refers to 
 
> get these from Repository, or do I have to parse the contents of 
> packed-refs to find out? 
 
Repository has a peel method. 
 
peeledref = repo.peel(ref); // null if problem. May be same as ref 
peeledid = peeled.getPeeledObjectId(); // null if not a tag 
 
A ref may be peeled or not, when you get it from getAllRefs 
 
-- robin
 |  
 |  
  |  
| Re: info/refs and ^{} [message #572810 is a reply to message #6800] | 
Sun, 10 May 2009 07:41   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
>Robin Rosenberg wrote: 
>> Alex Blewitt wrote: 
>> 
>> I can see these come from lines in the packed-refs file, but when using 
>> Repository.getAllRefs() these aren't listed. Is there anything I can do to 
> B^{} is the peeled refs, i.e. the object a tag refers to 
> 
>> get these from Repository, or do I have to parse the contents of 
>> packed-refs to find out? 
> 
> Repository has a peel method. 
> 
> peeledref = repo.peel(ref); // null if problem. May be same as ref 
> peeledid = peeled.getPeeledObjectId(); // null if not a tag 
 
Excellent! I can now dump out the same format for the info/refs, with the 
possible exception of HEAD. If I generate the list myself for egit, I get: 
 
baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31    HEAD 
baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31    refs/heads/master 
9f0e280a3bada33978b2c0766886a25cd16994b4    refs/remotes/origin/master 
3c064161d4568dd9cf3d76c0921a19ef1bc280b6    refs/remotes/origin/stable 
8bbde7aacf771a9afb6992434f1ae413e010c6d8    refs/tags/spearce-gpg-pub 
fd608fbe625a2b456d9f15c2b1dc41f252057dd7    refs/tags/spearce-gpg-pub^{} 
 
(that has local commits in my HEAD, of course). If I look at the entries 
generated by git update-server-info, I get: 
 
baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31        refs/heads/master 
9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/HEAD 
9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/master 
3c064161d4568dd9cf3d76c0921a19ef1bc280b6        refs/remotes/origin/stable 
8bbde7aacf771a9afb6992434f1ae413e010c6d8        refs/tags/spearce-gpg-pub 
fd608fbe625a2b456d9f15c2b1dc41f252057dd7        refs/tags/spearce-gpg-pub^{} 
 
I can filter out the HEAD (which seems to be put in there manaully by 
readRefs()) 
 
        try { 
            final Ref r = readRefBasic(Constants.HEAD, 0); 
            if (r != null && r.getObjectId() != null) 
                avail.put(Constants.HEAD, r); 
        } catch (IOException e) { 
 
But I don't know where/how the refs/remotes/origin/HEAD is being put in (or, 
if it's something that is to be concerned about). Obviously I'd like to be 
equivalent to what server-update-info is doing if possible; but it's 
measurable progress, at least. 
 
Alex
 |  
 |  
  |  
| Re: info/refs and ^{} [message #572840 is a reply to message #6807] | 
Sun, 10 May 2009 09:22   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Alex Blewitt wrote: 
> (that has local commits in my HEAD, of course). If I look at the entries 
> generated by git update-server-info, I get: 
>  
> baca4a2e2ed5fd2a19a7136baba3d8b05cc15d31        refs/heads/master 
> 9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/HEAD 
> 9f0e280a3bada33978b2c0766886a25cd16994b4        refs/remotes/origin/master 
> 3c064161d4568dd9cf3d76c0921a19ef1bc280b6        refs/remotes/origin/stable 
> 8bbde7aacf771a9afb6992434f1ae413e010c6d8        refs/tags/spearce-gpg-pub 
> fd608fbe625a2b456d9f15c2b1dc41f252057dd7        
> refs/tags/spearce-gpg-pub^{} 
>  
> I can filter out the HEAD (which seems to be put in there manaully by 
> readRefs()) 
>  
>         try { 
>             final Ref r = readRefBasic(Constants.HEAD, 0); 
>             if (r != null && r.getObjectId() != null) 
>                 avail.put(Constants.HEAD, r); 
>         } catch (IOException e) { 
>  
> But I don't know where/how the refs/remotes/origin/HEAD is being put in 
> (or, if it's something that is to be concerned about). Obviously I'd like 
> to be equivalent to what server-update-info is doing if possible; but it's 
> measurable progress, at least. 
 
For now. don't worry. It seems like a bug in the refs reading code in jgit. 
 
-- robin
 |  
 |  
  |   
Goto Forum:
 
 Current Time: Tue Nov 04 01:04:15 EST 2025 
 Powered by  FUDForum. Page generated in 0.05344 seconds  
 |