Skip to content

Commit 448286b

Browse files
feat: adding support for git CLI operation over go-git (#73)
* adding git commit message truncation logic for large messages * first commit draft * cleaning dead code * added commit count * fix git format in cmd * added interfaces * comments * removing output * minor restructuring * removing deuplicacy for OpenNewRepo * changes * fixes * wire * old story refactor * fixes for IT tests * cleaning * refactorings * minor * test fixes * test fixes * test fixes * PR comments * removing old changes * cleaning up * wire * minor changes * added comments on interface methods * next error handling * status
1 parent 872c29f commit 448286b

18 files changed

+1148
-609
lines changed

api/GrpcHandler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func (impl *GrpcHandlerImpl) GetCommitMetadata(ctx context.Context, req *pb.Comm
289289
BranchName: req.BranchName,
290290
}
291291

292-
var gitCommit *git.GitCommit
292+
var gitCommit *git.GitCommitBase
293293
var err error
294294

295295
if len(req.GitTag) > 0 {
@@ -771,7 +771,7 @@ func (impl *GrpcHandlerImpl) mapGitChanges(gitChanges *git.GitChanges) *pb.GitCh
771771
}
772772
}
773773

774-
func (impl *GrpcHandlerImpl) mapGitCommit(commit *git.GitCommit) (*pb.GitCommit, error) {
774+
func (impl *GrpcHandlerImpl) mapGitCommit(commit *git.GitCommitBase) (*pb.GitCommit, error) {
775775

776776
// mapping FileStats
777777
var mappedFileStats []*pb.FileStat

api/RestHandler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func (handler RestHandlerImpl) ReloadMaterial(w http.ResponseWriter, r *http.Req
192192
}
193193
}
194194

195-
//-------------
195+
// -------------
196196
func (handler RestHandlerImpl) FetchChanges(w http.ResponseWriter, r *http.Request) {
197197
decoder := json.NewDecoder(r.Body)
198198
material := &git.FetchScmChangesRequest{}
@@ -239,7 +239,7 @@ func (handler RestHandlerImpl) GetCommitMetadata(w http.ResponseWriter, r *http.
239239
return
240240
}
241241
handler.logger.Infow("commit detail request", "req", material)
242-
var commits *git.GitCommit
242+
var commits *git.GitCommitBase
243243
if len(material.GitTag) > 0 {
244244
commits, err = handler.repositoryManager.GetCommitInfoForTag(material)
245245
} else if len(material.BranchName) > 0 {

internal/Configuration.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package internal
22

3-
import "github.com/caarlos0/env"
3+
import (
4+
"github.com/caarlos0/env"
5+
)
46

57
type Configuration struct {
68
CommitStatsTimeoutInSec int `env:"COMMIT_STATS_TIMEOUT_IN_SEC" envDefault:"2"`
79
EnableFileStats bool `env:"ENABLE_FILE_STATS" envDefault:"false"`
810
GitHistoryCount int `env:"GIT_HISTORY_COUNT" envDefault:"15"`
911
MinLimit int `env:"MIN_LIMIT_FOR_PVC" envDefault:"1"` // in MB
12+
UseGitCli bool `env:"USE_GIT_CLI" envDefault:"false"`
1013
}
1114

1215
func ParseConfiguration() (*Configuration, error) {

pkg/RepoManages.go

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ import (
3131
type RepoManager interface {
3232
GetHeadForPipelineMaterials(ids []int) ([]*git.CiPipelineMaterialBean, error)
3333
FetchChanges(pipelineMaterialId int, from string, to string, count int, showAll bool) (*git.MaterialChangeResp, error) //limit
34-
GetCommitMetadata(pipelineMaterialId int, gitHash string) (*git.GitCommit, error)
35-
GetLatestCommitForBranch(pipelineMaterialId int, branchName string) (*git.GitCommit, error)
36-
GetCommitMetadataForPipelineMaterial(pipelineMaterialId int, gitHash string) (*git.GitCommit, error)
34+
GetCommitMetadata(pipelineMaterialId int, gitHash string) (*git.GitCommitBase, error)
35+
GetLatestCommitForBranch(pipelineMaterialId int, branchName string) (*git.GitCommitBase, error)
36+
GetCommitMetadataForPipelineMaterial(pipelineMaterialId int, gitHash string) (*git.GitCommitBase, error)
3737

3838
SaveGitProvider(provider *sql.GitProvider) (*sql.GitProvider, error)
3939
AddRepo(material []*sql.GitMaterial) ([]*sql.GitMaterial, error)
@@ -42,7 +42,7 @@ type RepoManager interface {
4242
ReloadAllRepo()
4343
ResetRepo(materialId int) error
4444
GetReleaseChanges(request *ReleaseChangesRequest) (*git.GitChanges, error)
45-
GetCommitInfoForTag(request *git.CommitMetadataRequest) (*git.GitCommit, error)
45+
GetCommitInfoForTag(request *git.CommitMetadataRequest) (*git.GitCommitBase, error)
4646
RefreshGitMaterial(req *git.RefreshGitMaterialRequest) (*git.RefreshGitMaterialResponse, error)
4747

4848
GetWebhookAndCiDataById(id int, ciPipelineMaterialId int) (*git.WebhookAndCiData, error)
@@ -56,6 +56,7 @@ type RepoManagerImpl struct {
5656
logger *zap.SugaredLogger
5757
materialRepository sql.MaterialRepository
5858
repositoryManager git.RepositoryManager
59+
repositoryManagerAnalytics git.RepositoryManagerAnalytics
5960
gitProviderRepository sql.GitProviderRepository
6061
ciPipelineMaterialRepository sql.CiPipelineMaterialRepository
6162
locker *internal.RepositoryLocker
@@ -66,12 +67,14 @@ type RepoManagerImpl struct {
6667
webhookEventDataMappingFilterResultRepository sql.WebhookEventDataMappingFilterResultRepository
6768
webhookEventBeanConverter git.WebhookEventBeanConverter
6869
configuration *internal.Configuration
70+
gitManager git.GitManagerImpl
6971
}
7072

7173
func NewRepoManagerImpl(
7274
logger *zap.SugaredLogger,
7375
materialRepository sql.MaterialRepository,
7476
repositoryManager git.RepositoryManager,
77+
repositoryManagerAnalytics git.RepositoryManagerAnalytics,
7578
gitProviderRepository sql.GitProviderRepository,
7679
ciPipelineMaterialRepository sql.CiPipelineMaterialRepository,
7780
locker *internal.RepositoryLocker,
@@ -81,11 +84,13 @@ func NewRepoManagerImpl(
8184
webhookEventDataMappingFilterResultRepository sql.WebhookEventDataMappingFilterResultRepository,
8285
webhookEventBeanConverter git.WebhookEventBeanConverter,
8386
configuration *internal.Configuration,
87+
gitManager git.GitManagerImpl,
8488
) *RepoManagerImpl {
8589
return &RepoManagerImpl{
8690
logger: logger,
8791
materialRepository: materialRepository,
8892
repositoryManager: repositoryManager,
93+
repositoryManagerAnalytics: repositoryManagerAnalytics,
8994
gitProviderRepository: gitProviderRepository,
9095
ciPipelineMaterialRepository: ciPipelineMaterialRepository,
9196
locker: locker,
@@ -96,6 +101,7 @@ func NewRepoManagerImpl(
96101
webhookEventDataMappingFilterResultRepository: webhookEventDataMappingFilterResultRepository,
97102
webhookEventBeanConverter: webhookEventBeanConverter,
98103
configuration: configuration,
104+
gitManager: gitManager,
99105
}
100106
}
101107

@@ -416,7 +422,7 @@ func (impl RepoManagerImpl) materialTOMaterialBeanConverter(material *sql.CiPipe
416422
GitMaterialId: material.GitMaterialId,
417423
Value: material.Value,
418424
Active: material.Active,
419-
GitCommit: &git.GitCommit{
425+
GitCommit: &git.GitCommitBase{
420426
Commit: material.LastSeenHash,
421427
Author: material.CommitAuthor,
422428
Date: material.CommitDate,
@@ -464,7 +470,7 @@ func (impl RepoManagerImpl) FetchGitCommitsForBranchFixPipeline(pipelineMaterial
464470

465471
return response, nil
466472
}
467-
commits := make([]*git.GitCommit, 0)
473+
commits := make([]*git.GitCommitBase, 0)
468474
err := json.Unmarshal([]byte(pipelineMaterial.CommitHistory), &commits)
469475
if err != nil {
470476
return nil, err
@@ -474,9 +480,9 @@ func (impl RepoManagerImpl) FetchGitCommitsForBranchFixPipeline(pipelineMaterial
474480
return response, nil
475481
}
476482

477-
filterCommits := make([]*git.GitCommit, 0)
483+
filterCommits := make([]*git.GitCommitBase, 0)
478484
for _, commit := range commits {
479-
excluded := impl.gitWatcher.PathMatcher(commit.FileStats, gitMaterial)
485+
excluded := impl.gitManager.PathMatcher(commit.FileStats, gitMaterial)
480486
impl.logger.Debugw("include exclude result", "excluded", excluded)
481487
if showAll {
482488
commit.Excluded = excluded
@@ -535,9 +541,9 @@ func (impl RepoManagerImpl) FetchGitCommitsForWebhookTypePipeline(pipelineMateri
535541
return response, nil
536542
}
537543

538-
var commits []*git.GitCommit
544+
var commits []*git.GitCommitBase
539545
for _, webhookEventData := range webhookEventDataArr {
540-
gitCommit := &git.GitCommit{
546+
gitCommit := &git.GitCommitBase{
541547
WebhookData: impl.webhookEventBeanConverter.ConvertFromWebhookParsedDataSqlBean(webhookEventData),
542548
}
543549
commits = append(commits, gitCommit)
@@ -546,7 +552,7 @@ func (impl RepoManagerImpl) FetchGitCommitsForWebhookTypePipeline(pipelineMateri
546552
return response, nil
547553
}
548554

549-
func (impl RepoManagerImpl) GetCommitInfoForTag(request *git.CommitMetadataRequest) (*git.GitCommit, error) {
555+
func (impl RepoManagerImpl) GetCommitInfoForTag(request *git.CommitMetadataRequest) (*git.GitCommitBase, error) {
550556
pipelineMaterial, err := impl.ciPipelineMaterialRepository.FindById(request.PipelineMaterialId)
551557
if err != nil {
552558
return nil, err
@@ -576,7 +582,7 @@ func (impl RepoManagerImpl) GetCommitInfoForTag(request *git.CommitMetadataReque
576582
return commit, err
577583
}
578584

579-
func (impl RepoManagerImpl) GetCommitMetadata(pipelineMaterialId int, gitHash string) (*git.GitCommit, error) {
585+
func (impl RepoManagerImpl) GetCommitMetadata(pipelineMaterialId int, gitHash string) (*git.GitCommitBase, error) {
580586
pipelineMaterial, err := impl.ciPipelineMaterialRepository.FindById(pipelineMaterialId)
581587
if err != nil {
582588
return nil, err
@@ -598,7 +604,7 @@ func (impl RepoManagerImpl) GetCommitMetadata(pipelineMaterialId int, gitHash st
598604
return commit, err
599605
}
600606

601-
func (impl RepoManagerImpl) GetLatestCommitForBranch(pipelineMaterialId int, branchName string) (*git.GitCommit, error) {
607+
func (impl RepoManagerImpl) GetLatestCommitForBranch(pipelineMaterialId int, branchName string) (*git.GitCommitBase, error) {
602608
pipelineMaterial, err := impl.ciPipelineMaterialRepository.FindById(pipelineMaterialId)
603609

604610
if err != nil {
@@ -628,7 +634,7 @@ func (impl RepoManagerImpl) GetLatestCommitForBranch(pipelineMaterialId int, bra
628634
Username: userName,
629635
Password: password,
630636
}
631-
updated, repo, err := impl.repositoryManager.Fetch(gitContext, gitMaterial.Url, gitMaterial.CheckoutLocation, gitMaterial)
637+
updated, repo, err := impl.repositoryManager.Fetch(gitContext, gitMaterial.Url, gitMaterial.CheckoutLocation)
632638
if !updated {
633639
impl.logger.Warn("repository is up to date")
634640
}
@@ -668,7 +674,7 @@ func (impl RepoManagerImpl) GetLatestCommitForBranch(pipelineMaterialId int, bra
668674
}
669675
}
670676

671-
func (impl RepoManagerImpl) GetCommitMetadataForPipelineMaterial(pipelineMaterialId int, gitHash string) (*git.GitCommit, error) {
677+
func (impl RepoManagerImpl) GetCommitMetadataForPipelineMaterial(pipelineMaterialId int, gitHash string) (*git.GitCommitBase, error) {
672678
// fetch ciPipelineMaterial
673679
pipelineMaterial, err := impl.ciPipelineMaterialRepository.FindById(pipelineMaterialId)
674680
if err != nil {
@@ -724,7 +730,7 @@ func (impl RepoManagerImpl) GetCommitMetadataForPipelineMaterial(pipelineMateria
724730
return nil, nil
725731
}
726732
commit := commits[0]
727-
excluded := impl.gitWatcher.PathMatcher(commit.FileStats, gitMaterial)
733+
excluded := impl.gitManager.PathMatcher(commit.FileStats, gitMaterial)
728734
commit.Excluded = excluded
729735
return commits[0], err
730736
}
@@ -747,7 +753,7 @@ func (impl RepoManagerImpl) GetReleaseChanges(request *ReleaseChangesRequest) (*
747753
repoLock.Mutex.Unlock()
748754
impl.locker.ReturnLocker(gitMaterial.Id)
749755
}()
750-
gitChanges, err := impl.repositoryManager.ChangesSinceByRepositoryForAnalytics(gitMaterial.CheckoutLocation, pipelineMaterial.Value, request.OldCommit, request.NewCommit)
756+
gitChanges, err := impl.repositoryManagerAnalytics.ChangesSinceByRepositoryForAnalytics(gitMaterial.CheckoutLocation, pipelineMaterial.Value, request.OldCommit, request.NewCommit)
751757
if err != nil {
752758
impl.logger.Errorw("error in computing changes", "req", request, "err", err)
753759
} else {

0 commit comments

Comments
 (0)