Skip to content

Commit 0f46b7a

Browse files
authored
Merge pull request #812 from L11R/incoming-dir-fix
storage: filesystem/dotgit, add support for tmp_objdir prefix
2 parents 56c4bf4 + 939ad4a commit 0f46b7a

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

Diff for: storage/filesystem/dotgit/dotgit.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,9 @@ func (d *DotGit) hasIncomingObjects() bool {
582582
directoryContents, err := d.fs.ReadDir(objectsPath)
583583
if err == nil {
584584
for _, file := range directoryContents {
585-
if strings.HasPrefix(file.Name(), "incoming-") && file.IsDir() {
585+
if file.IsDir() && (strings.HasPrefix(file.Name(), "tmp_objdir-incoming-") ||
586+
// Before Git 2.35 incoming commits directory had another prefix
587+
strings.HasPrefix(file.Name(), "incoming-")) {
586588
d.incomingDirName = file.Name()
587589
}
588590
}

Diff for: storage/filesystem/dotgit/dotgit_test.go

+23-2
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,27 @@ func (s *SuiteDotGit) TestObject(c *C) {
640640
fs := fixtures.ByTag(".git").ByTag("unpacked").One().DotGit()
641641
dir := New(fs)
642642

643+
hash := plumbing.NewHash("03db8e1fbe133a480f2867aac478fd866686d69e")
644+
file, err := dir.Object(hash)
645+
c.Assert(err, IsNil)
646+
c.Assert(strings.HasSuffix(
647+
file.Name(), fs.Join("objects", "03", "db8e1fbe133a480f2867aac478fd866686d69e")),
648+
Equals, true,
649+
)
650+
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
651+
incomingDirPath := fs.Join("objects", "tmp_objdir-incoming-123456")
652+
incomingFilePath := fs.Join(incomingDirPath, incomingHash[0:2], incomingHash[2:40])
653+
fs.MkdirAll(incomingDirPath, os.FileMode(0755))
654+
fs.Create(incomingFilePath)
655+
656+
_, err = dir.Object(plumbing.NewHash(incomingHash))
657+
c.Assert(err, IsNil)
658+
}
659+
660+
func (s *SuiteDotGit) TestPreGit235Object(c *C) {
661+
fs := fixtures.ByTag(".git").ByTag("unpacked").One().DotGit()
662+
dir := New(fs)
663+
643664
hash := plumbing.NewHash("03db8e1fbe133a480f2867aac478fd866686d69e")
644665
file, err := dir.Object(hash)
645666
c.Assert(err, IsNil)
@@ -665,7 +686,7 @@ func (s *SuiteDotGit) TestObjectStat(c *C) {
665686
_, err := dir.ObjectStat(hash)
666687
c.Assert(err, IsNil)
667688
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
668-
incomingDirPath := fs.Join("objects", "incoming-123456")
689+
incomingDirPath := fs.Join("objects", "tmp_objdir-incoming-123456")
669690
incomingFilePath := fs.Join(incomingDirPath, incomingHash[0:2], incomingHash[2:40])
670691
fs.MkdirAll(incomingDirPath, os.FileMode(0755))
671692
fs.Create(incomingFilePath)
@@ -683,7 +704,7 @@ func (s *SuiteDotGit) TestObjectDelete(c *C) {
683704
c.Assert(err, IsNil)
684705

685706
incomingHash := "9d25e0f9bde9f82882b49fe29117b9411cb157b7" //made up hash
686-
incomingDirPath := fs.Join("objects", "incoming-123456")
707+
incomingDirPath := fs.Join("objects", "tmp_objdir-incoming-123456")
687708
incomingSubDirPath := fs.Join(incomingDirPath, incomingHash[0:2])
688709
incomingFilePath := fs.Join(incomingSubDirPath, incomingHash[2:40])
689710

0 commit comments

Comments
 (0)