Skip to content

Commit bdb35e1

Browse files
authored
Merge pull request #1085 from aymanbagabas/head-ref-first
storage: dotgit, head reference usually comes first
2 parents d6bb286 + 464767f commit bdb35e1

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

storage/filesystem/dotgit/dotgit.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ func (d *DotGit) objectPacks() ([]plumbing.Hash, error) {
249249
continue
250250
}
251251

252-
h := plumbing.NewHash(n[5 : len(n)-5]) //pack-(hash).pack
252+
h := plumbing.NewHash(n[5 : len(n)-5]) // pack-(hash).pack
253253
if h.IsZero() {
254254
// Ignore files with badly-formatted names.
255255
continue
@@ -701,16 +701,16 @@ func (d *DotGit) SetRef(r, old *plumbing.Reference) error {
701701
// Symbolic references are resolved and included in the output.
702702
func (d *DotGit) Refs() ([]*plumbing.Reference, error) {
703703
var refs []*plumbing.Reference
704-
var seen = make(map[plumbing.ReferenceName]bool)
705-
if err := d.addRefsFromRefDir(&refs, seen); err != nil {
704+
seen := make(map[plumbing.ReferenceName]bool)
705+
if err := d.addRefFromHEAD(&refs); err != nil {
706706
return nil, err
707707
}
708708

709-
if err := d.addRefsFromPackedRefs(&refs, seen); err != nil {
709+
if err := d.addRefsFromRefDir(&refs, seen); err != nil {
710710
return nil, err
711711
}
712712

713-
if err := d.addRefFromHEAD(&refs); err != nil {
713+
if err := d.addRefsFromPackedRefs(&refs, seen); err != nil {
714714
return nil, err
715715
}
716716

@@ -815,7 +815,8 @@ func (d *DotGit) addRefsFromPackedRefsFile(refs *[]*plumbing.Reference, f billy.
815815
}
816816

817817
func (d *DotGit) openAndLockPackedRefs(doCreate bool) (
818-
pr billy.File, err error) {
818+
pr billy.File, err error,
819+
) {
819820
var f billy.File
820821
defer func() {
821822
if err != nil && f != nil {
@@ -1020,7 +1021,7 @@ func (d *DotGit) readReferenceFile(path, name string) (ref *plumbing.Reference,
10201021

10211022
func (d *DotGit) CountLooseRefs() (int, error) {
10221023
var refs []*plumbing.Reference
1023-
var seen = make(map[plumbing.ReferenceName]bool)
1024+
seen := make(map[plumbing.ReferenceName]bool)
10241025
if err := d.addRefsFromRefDir(&refs, seen); err != nil {
10251026
return 0, err
10261027
}

storage/filesystem/dotgit/dotgit_test.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ func (s *SuiteDotGit) TestSetRefsNorwfs(c *C) {
8585
testSetRefs(c, dir)
8686
}
8787

88+
func (s *SuiteDotGit) TestRefsHeadFirst(c *C) {
89+
fs := fixtures.Basic().ByTag(".git").One().DotGit()
90+
dir := New(fs)
91+
refs, err := dir.Refs()
92+
c.Assert(err, IsNil)
93+
c.Assert(len(refs), Not(Equals), 0)
94+
c.Assert(refs[0].Name().String(), Equals, "HEAD")
95+
}
96+
8897
func testSetRefs(c *C, dir *DotGit) {
8998
firstFoo := plumbing.NewReferenceFromStrings(
9099
"refs/heads/foo",
@@ -175,7 +184,6 @@ func (s *SuiteDotGit) TestRefsFromPackedRefs(c *C) {
175184
ref := findReference(refs, "refs/remotes/origin/branch")
176185
c.Assert(ref, NotNil)
177186
c.Assert(ref.Hash().String(), Equals, "e8d3ffab552895c19b9fcf7aa264d277cde33881")
178-
179187
}
180188

181189
func (s *SuiteDotGit) TestRefsFromReferenceFile(c *C) {
@@ -189,7 +197,6 @@ func (s *SuiteDotGit) TestRefsFromReferenceFile(c *C) {
189197
c.Assert(ref, NotNil)
190198
c.Assert(ref.Type(), Equals, plumbing.SymbolicReference)
191199
c.Assert(string(ref.Target()), Equals, "refs/remotes/origin/master")
192-
193200
}
194201

195202
func BenchmarkRefMultipleTimes(b *testing.B) {
@@ -538,7 +545,6 @@ func (s *SuiteDotGit) TestObjectPackWithKeepDescriptors(c *C) {
538545

539546
err = dir.Close()
540547
c.Assert(err, NotNil)
541-
542548
}
543549

544550
func (s *SuiteDotGit) TestObjectPackIdx(c *C) {
@@ -649,7 +655,7 @@ func (s *SuiteDotGit) TestObject(c *C) {
649655
file.Name(), fs.Join("objects", "03", "db8e1fbe133a480f2867aac478fd866686d69e")),
650656
Equals, true,
651657
)
652-
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
658+
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" // made up hash
653659
incomingDirPath := fs.Join("objects", "tmp_objdir-incoming-123456")
654660
incomingFilePath := fs.Join(incomingDirPath, incomingHash[0:2], incomingHash[2:40])
655661
fs.MkdirAll(incomingDirPath, os.FileMode(0755))
@@ -670,7 +676,7 @@ func (s *SuiteDotGit) TestPreGit235Object(c *C) {
670676
file.Name(), fs.Join("objects", "03", "db8e1fbe133a480f2867aac478fd866686d69e")),
671677
Equals, true,
672678
)
673-
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
679+
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" // made up hash
674680
incomingDirPath := fs.Join("objects", "incoming-123456")
675681
incomingFilePath := fs.Join(incomingDirPath, incomingHash[0:2], incomingHash[2:40])
676682
fs.MkdirAll(incomingDirPath, os.FileMode(0755))
@@ -687,7 +693,7 @@ func (s *SuiteDotGit) TestObjectStat(c *C) {
687693
hash := plumbing.NewHash("03db8e1fbe133a480f2867aac478fd866686d69e")
688694
_, err := dir.ObjectStat(hash)
689695
c.Assert(err, IsNil)
690-
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
696+
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" // made up hash
691697
incomingDirPath := fs.Join("objects", "tmp_objdir-incoming-123456")
692698
incomingFilePath := fs.Join(incomingDirPath, incomingHash[0:2], incomingHash[2:40])
693699
fs.MkdirAll(incomingDirPath, os.FileMode(0755))
@@ -705,7 +711,7 @@ func (s *SuiteDotGit) TestObjectDelete(c *C) {
705711
err := dir.ObjectDelete(hash)
706712
c.Assert(err, IsNil)
707713

708-
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
714+
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" // made up hash
709715
incomingDirPath := fs.Join("objects", "tmp_objdir-incoming-123456")
710716
incomingSubDirPath := fs.Join(incomingDirPath, incomingHash[0:2])
711717
incomingFilePath := fs.Join(incomingSubDirPath, incomingHash[2:40])

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy