@@ -22,6 +22,7 @@ import (
2222 "github.com/go-git/go-git/v5/plumbing/cache"
2323 "github.com/go-git/go-git/v5/plumbing/object"
2424 "github.com/go-git/go-git/v5/storage/filesystem"
25+ pkgerrors "github.com/pkg/errors"
2526)
2627
2728// This file contains helpers for interacting with gogit.
@@ -30,23 +31,23 @@ func initEmptyRepository(path string) (*git.Repository, error) {
3031 isBare := true // Porch only uses bare repositories
3132 repo , err := git .PlainInit (path , isBare )
3233 if err != nil {
33- return nil , err
34+ return nil , pkgerrors . Wrapf ( err , "gogit: repo plain init failed on path %q" , path )
3435 }
3536 if err := initializeDefaultBranches (repo ); err != nil {
36- return nil , err
37+ return nil , pkgerrors . Wrapf ( err , "gogit: default branch initialize failed on repo for path %q" , path )
3738 }
3839 return repo , nil
3940}
4041
4142func initializeDefaultBranches (repo * git.Repository ) error {
4243 // Adjust default references
4344 if err := repo .Storer .RemoveReference (plumbing .Master ); err != nil {
44- return err
45+ return pkgerrors . Wrapf ( err , "gogit: failed to remove reference %+v on repo %+v" , plumbing . Master , repo )
4546 }
4647 // gogit points HEAD at a wrong branch; point it at main
4748 main := plumbing .NewSymbolicReference (plumbing .HEAD , DefaultMainReferenceName )
4849 if err := repo .Storer .SetReference (main ); err != nil {
49- return err
50+ return pkgerrors . Wrapf ( err , "gogit: failed to set reference %+v on repo %+v" , main , repo )
5051 }
5152 return nil
5253}
@@ -60,7 +61,7 @@ func openRepository(path string) (*git.Repository, error) {
6061func initializeOrigin (repo * git.Repository , address string ) error {
6162 cfg , err := repo .Config ()
6263 if err != nil {
63- return err
64+ return pkgerrors . Wrapf ( err , "gogit: failed to get configuration for repo %+v" , repo )
6465 }
6566
6667 cfg .Remotes [OriginName ] = & config.RemoteConfig {
@@ -70,7 +71,7 @@ func initializeOrigin(repo *git.Repository, address string) error {
7071 }
7172
7273 if err := repo .SetConfig (cfg ); err != nil {
73- return err
74+ return pkgerrors . Wrapf ( err , "gogit: failed to set configuration for repo %+v" , repo )
7475 }
7576
7677 return nil
@@ -79,15 +80,15 @@ func initializeOrigin(repo *git.Repository, address string) error {
7980func storeCommit (repo * git.Repository , commit * object.Commit ) (plumbing.Hash , error ) {
8081 eo := repo .Storer .NewEncodedObject ()
8182 if err := commit .Encode (eo ); err != nil {
82- return plumbing.Hash {}, err
83+ return plumbing.Hash {}, pkgerrors . Wrapf ( err , "gogit: failed to store commit %+v on repo %+v" , commit , repo )
8384 }
8485 return repo .Storer .SetEncodedObject (eo )
8586}
8687
8788func storeTree (repo * git.Repository , tree * object.Tree ) (plumbing.Hash , error ) {
8889 eo := repo .Storer .NewEncodedObject ()
8990 if err := tree .Encode (eo ); err != nil {
90- return plumbing.Hash {}, err
91+ return plumbing.Hash {}, pkgerrors . Wrapf ( err , "gogit: failed to store tree %+v on repo %+v" , tree , repo )
9192 }
9293 return repo .Storer .SetEncodedObject (eo )
9394}
@@ -100,16 +101,16 @@ func storeBlob(repo *git.Repository, value string) (plumbing.Hash, error) {
100101
101102 w , err := eo .Writer ()
102103 if err != nil {
103- return plumbing.Hash {}, err
104+ return plumbing.Hash {}, pkgerrors . Wrapf ( err , "gogit: failed to get writer for repo %+v" , repo )
104105 }
105106
106107 if _ , err := w .Write (data ); err != nil {
107108 w .Close ()
108- return plumbing.Hash {}, err
109+ return plumbing.Hash {}, pkgerrors . Wrapf ( err , "gogit: failed to write blob %+v to repo %+v" , value , repo )
109110 }
110111
111112 if err := w .Close (); err != nil {
112- return plumbing.Hash {}, err
113+ return plumbing.Hash {}, pkgerrors . Wrapf ( err , "gogit: failed to close repo %+v" , repo )
113114 }
114115
115116 return repo .Storer .SetEncodedObject (eo )
0 commit comments