From 50a398052b71e3d0b8fb788dc060552f2bea5afc Mon Sep 17 00:00:00 2001 From: risk danger olson Date: Tue, 24 Nov 2015 13:18:26 -0700 Subject: [PATCH] teach localstorage how to init its dirs --- lfs/lfs.go | 23 ++++++++++++----------- localstorage/localstorage.go | 17 +++++++++++++---- localstorage/scan.go | 2 +- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/lfs/lfs.go b/lfs/lfs.go index 93c447eb..d143bed2 100644 --- a/lfs/lfs.go +++ b/lfs/lfs.go @@ -92,27 +92,28 @@ func ResolveDirs() { LocalWorkingDir, LocalGitDir, err = resolveGitDir() if err == nil { LocalGitStorageDir = resolveGitStorageDir(LocalGitDir) - LocalMediaDir = filepath.Join(LocalGitStorageDir, "lfs", "objects") - LocalStorage = localstorage.New(LocalMediaDir) - LocalLogDir = filepath.Join(LocalMediaDir, "logs") TempDir = filepath.Join(LocalGitDir, "lfs", "tmp") // temp files per worktree - if err := os.MkdirAll(LocalMediaDir, localMediaDirPerms); err != nil { - panic(fmt.Errorf("Error trying to create objects directory in '%s': %s", LocalMediaDir, err)) + + ls, err := localstorage.New( + filepath.Join(LocalGitStorageDir, "lfs", "objects"), + filepath.Join(TempDir, "objects"), + ) + + if err != nil { + panic(fmt.Sprintf("Error trying to init LocalStorage: %s", err)) } + LocalStorage = ls + LocalMediaDir = ls.RootDir + LocalObjectTempDir = ls.TempDir + LocalLogDir = filepath.Join(ls.RootDir, "logs") if err := os.MkdirAll(LocalLogDir, localLogDirPerms); err != nil { panic(fmt.Errorf("Error trying to create log directory in '%s': %s", LocalLogDir, err)) } - - LocalObjectTempDir = filepath.Join(TempDir, "objects") - if err := os.MkdirAll(LocalObjectTempDir, tempDirPerms); err != nil { - panic(fmt.Errorf("Error trying to create temp directory in '%s': %s", TempDir, err)) - } } } func init() { - tracerx.DefaultKey = "GIT" tracerx.Prefix = "trace git-lfs: " diff --git a/localstorage/localstorage.go b/localstorage/localstorage.go index 7641b21e..eae34575 100644 --- a/localstorage/localstorage.go +++ b/localstorage/localstorage.go @@ -18,7 +18,8 @@ var ( // LocalStorage manages the locally stored LFS objects for a repository. type LocalStorage struct { - Root string + RootDir string + TempDir string } // Object represents a locally stored LFS object. @@ -27,8 +28,16 @@ type Object struct { Size int64 } -func New(dir string) *LocalStorage { - return &LocalStorage{dir} +func New(storageDir, tempDir string) (*LocalStorage, error) { + if err := os.MkdirAll(storageDir, dirPerms); err != nil { + return nil, err + } + + if err := os.MkdirAll(tempDir, dirPerms); err != nil { + return nil, err + } + + return &LocalStorage{storageDir, tempDir}, nil } func (s *LocalStorage) ObjectPath(oid string) string { @@ -45,5 +54,5 @@ func (s *LocalStorage) BuildObjectPath(oid string) (string, error) { } func localObjectDir(s *LocalStorage, oid string) string { - return filepath.Join(s.Root, oid[0:2], oid[2:4]) + return filepath.Join(s.RootDir, oid[0:2], oid[2:4]) } diff --git a/localstorage/scan.go b/localstorage/scan.go index 209c2b5a..2a97da97 100644 --- a/localstorage/scan.go +++ b/localstorage/scan.go @@ -27,7 +27,7 @@ func (s *LocalStorage) ScanObjectsChan() <-chan Object { go func() { defer close(ch) - scanObjects(s.Root, ch) + scanObjects(s.RootDir, ch) }() return ch