From 164fa4153d8710ed99534cc3bc2e06d65e9d1790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Ga=C4=87e=C5=A1a?= Date: Wed, 5 Mar 2025 21:16:00 +0000 Subject: [PATCH] feat: [CODE-3309]: move shared repo root dir to the same parent dir as the repos (#3517) * removed the not-exist error check for MkdirAll * move shared repo root dir to the same parent dir as the repos --- git/merge.go | 2 +- git/operations.go | 2 +- git/scan_secrets.go | 2 +- git/service.go | 41 +++++++++++++++++++++++++++-------------- git/tag.go | 2 +- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/git/merge.go b/git/merge.go index a6f9ae115..92a233e3d 100644 --- a/git/merge.go +++ b/git/merge.go @@ -264,7 +264,7 @@ func (s *Service) Merge(ctx context.Context, params *MergeParams) (MergeOutput, var mergeCommitSHA sha.SHA var conflicts []string - err = sharedrepo.Run(ctx, refUpdater, s.tmpDir, repoPath, func(s *sharedrepo.SharedRepo) error { + err = sharedrepo.Run(ctx, refUpdater, s.sharedRepoRoot, repoPath, func(s *sharedrepo.SharedRepo) error { mergeCommitSHA, conflicts, err = mergeFunc( ctx, s, diff --git a/git/operations.go b/git/operations.go index e3ddc2712..f09d5ce64 100644 --- a/git/operations.go +++ b/git/operations.go @@ -151,7 +151,7 @@ func (s *Service) CommitFiles(ctx context.Context, params *CommitFilesParams) (C // run the actions in a shared repo - err = sharedrepo.Run(ctx, refUpdater, s.tmpDir, repoPath, func(r *sharedrepo.SharedRepo) error { + err = sharedrepo.Run(ctx, refUpdater, s.sharedRepoRoot, repoPath, func(r *sharedrepo.SharedRepo) error { var parentCommits []sha.SHA var oldTreeSHA sha.SHA diff --git a/git/scan_secrets.go b/git/scan_secrets.go index 9aa55040d..90156aed3 100644 --- a/git/scan_secrets.go +++ b/git/scan_secrets.go @@ -78,7 +78,7 @@ func (s *Service) ScanSecrets(ctx context.Context, params *ScanSecretsParams) (* repoPath := getFullPathForRepo(s.reposRoot, params.RepoUID) var findings []ScanSecretsFinding - err := sharedrepo.Run(ctx, nil, s.tmpDir, repoPath, func(sharedRepo *sharedrepo.SharedRepo) error { + err := sharedrepo.Run(ctx, nil, s.sharedRepoRoot, repoPath, func(sharedRepo *sharedrepo.SharedRepo) error { fsGitleaksIgnorePath, err := s.setupGitleaksIgnoreInSharedRepo( ctx, sharedRepo, diff --git a/git/service.go b/git/service.go index 1fd695832..af4d0fba6 100644 --- a/git/service.go +++ b/git/service.go @@ -15,11 +15,10 @@ package git import ( - "io/fs" + "fmt" "os" "path/filepath" - "github.com/harness/gitness/errors" "github.com/harness/gitness/git/api" "github.com/harness/gitness/git/hook" "github.com/harness/gitness/git/storage" @@ -28,12 +27,13 @@ import ( const ( repoSubdirName = "repos" + repoSharedRepoSubdirName = "shared_temp" ReposGraveyardSubdirName = "cleanup" ) type Service struct { reposRoot string - tmpDir string + sharedRepoRoot string git *api.Git hookClientFactory hook.ClientFactory store storage.Store @@ -48,24 +48,26 @@ func New( storage storage.Store, ) (*Service, error) { // Create repos folder - reposRoot := filepath.Join(config.Root, repoSubdirName) - if _, err := os.Stat(reposRoot); errors.Is(err, os.ErrNotExist) { - if err = os.MkdirAll(reposRoot, fileMode700); err != nil { - return nil, err - } + reposRoot, err := createSubdir(config.Root, repoSubdirName) + if err != nil { + return nil, err } // create a temp dir for deleted repositories // this dir should get cleaned up peridocally if it's not empty - reposGraveyard := filepath.Join(config.Root, ReposGraveyardSubdirName) - if _, errdir := os.Stat(reposGraveyard); errors.Is(errdir, fs.ErrNotExist) { - if errdir = os.MkdirAll(reposGraveyard, fileMode700); errdir != nil { - return nil, errdir - } + reposGraveyard, err := createSubdir(config.Root, ReposGraveyardSubdirName) + if err != nil { + return nil, err } + + sharedRepoDir, err := createSubdir(config.Root, repoSharedRepoSubdirName) + if err != nil { + return nil, err + } + return &Service{ reposRoot: reposRoot, - tmpDir: config.TmpDir, + sharedRepoRoot: sharedRepoDir, reposGraveyard: reposGraveyard, git: adapter, hookClientFactory: hookClientFactory, @@ -73,3 +75,14 @@ func New( gitHookPath: config.HookPath, }, nil } + +func createSubdir(root, subdir string) (string, error) { + subdirPath := filepath.Join(root, subdir) + + err := os.MkdirAll(subdirPath, fileMode700) + if err != nil { + return "", fmt.Errorf("failed to create directory, path=%s: %w", subdirPath, err) + } + + return subdirPath, nil +} diff --git a/git/tag.go b/git/tag.go index a2be474f7..1462635a8 100644 --- a/git/tag.go +++ b/git/tag.go @@ -285,7 +285,7 @@ func (s *Service) CreateCommitTag(ctx context.Context, params *CreateCommitTagPa // create the tag - err = sharedrepo.Run(ctx, refUpdater, s.tmpDir, repoPath, func(r *sharedrepo.SharedRepo) error { + err = sharedrepo.Run(ctx, refUpdater, s.sharedRepoRoot, repoPath, func(r *sharedrepo.SharedRepo) error { if err := s.git.CreateTag(ctx, r.Directory(), tagName, targetCommit.SHA, createTagRequest); err != nil { return fmt.Errorf("failed to create tag '%s': %w", tagName, err) }