@@ -2,39 +2,36 @@ package gitobj
22
33import (
44 "bufio"
5+ "hash"
56 "io"
67 "os"
78 "path"
89 "regexp"
910 "strconv"
1011 "strings"
1112
12- "github.com/git-lfs/gitobj/pack"
13- "github.com/git-lfs/gitobj/storage"
13+ "github.com/git-lfs/gitobj/v2/ pack"
14+ "github.com/git-lfs/gitobj/v2/ storage"
1415)
1516
16- // NewFilesystemBackend initializes a new filesystem-based backend.
17- func NewFilesystemBackend (root , tmp string ) (storage.Backend , error ) {
18- return NewFilesystemBackendWithAlternates (root , tmp , "" )
19- }
20-
21- // NewFilesystemBackendWithAlternates initializes a new filesystem-based
22- // backend, optionally with additional alternates as specified in the
17+ // NewFilesystemBackend initializes a new filesystem-based backend,
18+ // optionally with additional alternates as specified in the
2319// `alternates` variable. The syntax is that of the Git environment variable
24- // GIT_ALTERNATE_OBJECT_DIRECTORIES.
25- func NewFilesystemBackendWithAlternates (root , tmp , alternates string ) (storage.Backend , error ) {
20+ // GIT_ALTERNATE_OBJECT_DIRECTORIES. The hash algorithm used is specified by
21+ // the algo parameter.
22+ func NewFilesystemBackend (root , tmp , alternates string , algo hash.Hash ) (storage.Backend , error ) {
2623 fsobj := newFileStorer (root , tmp )
27- packs , err := pack .NewStorage (root )
24+ packs , err := pack .NewStorage (root , algo )
2825 if err != nil {
2926 return nil , err
3027 }
3128
32- storage , err := findAllBackends (fsobj , packs , root )
29+ storage , err := findAllBackends (fsobj , packs , root , algo )
3330 if err != nil {
3431 return nil , err
3532 }
3633
37- storage , err = addAlternatesFromEnvironment (storage , alternates )
34+ storage , err = addAlternatesFromEnvironment (storage , alternates , algo )
3835 if err != nil {
3936 return nil , err
4037 }
@@ -45,7 +42,7 @@ func NewFilesystemBackendWithAlternates(root, tmp, alternates string) (storage.B
4542 }, nil
4643}
4744
48- func findAllBackends (mainLoose * fileStorer , mainPacked * pack.Storage , root string ) ([]storage.Storage , error ) {
45+ func findAllBackends (mainLoose * fileStorer , mainPacked * pack.Storage , root string , algo hash. Hash ) ([]storage.Storage , error ) {
4946 storage := make ([]storage.Storage , 2 )
5047 storage [0 ] = mainLoose
5148 storage [1 ] = mainPacked
@@ -61,7 +58,7 @@ func findAllBackends(mainLoose *fileStorer, mainPacked *pack.Storage, root strin
6158
6259 scanner := bufio .NewScanner (f )
6360 for scanner .Scan () {
64- storage , err = addAlternateDirectory (storage , scanner .Text ())
61+ storage , err = addAlternateDirectory (storage , scanner .Text (), algo )
6562 if err != nil {
6663 return nil , err
6764 }
@@ -74,24 +71,24 @@ func findAllBackends(mainLoose *fileStorer, mainPacked *pack.Storage, root strin
7471 return storage , nil
7572}
7673
77- func addAlternateDirectory (s []storage.Storage , dir string ) ([]storage.Storage , error ) {
74+ func addAlternateDirectory (s []storage.Storage , dir string , algo hash. Hash ) ([]storage.Storage , error ) {
7875 s = append (s , newFileStorer (dir , "" ))
79- pack , err := pack .NewStorage (dir )
76+ pack , err := pack .NewStorage (dir , algo )
8077 if err != nil {
8178 return s , err
8279 }
8380 s = append (s , pack )
8481 return s , nil
8582}
8683
87- func addAlternatesFromEnvironment (s []storage.Storage , env string ) ([]storage.Storage , error ) {
84+ func addAlternatesFromEnvironment (s []storage.Storage , env string , algo hash. Hash ) ([]storage.Storage , error ) {
8885 if len (env ) == 0 {
8986 return s , nil
9087 }
9188
9289 for _ , dir := range splitAlternateString (env , alternatesSeparator ) {
9390 var err error
94- s , err = addAlternateDirectory (s , dir )
91+ s , err = addAlternateDirectory (s , dir , algo )
9592 if err != nil {
9693 return nil , err
9794 }
0 commit comments