This is an automated email from the ASF dual-hosted git repository. abeizn pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 128279f13c02b60aeafce5b92158cf2f77286ea8 Author: xgdyp <[email protected]> AuthorDate: Fri Jul 15 09:25:29 2022 +0800 fix: add commitfileComponent table --- models/domainlayer/code/commit.go | 12 ++++++++++++ models/migrationscripts/updateSchemas20220711.go | 16 ++++++++++++++-- plugins/gitextractor/models/interface.go | 1 + plugins/gitextractor/parser/repo.go | 18 +++++++++++++++--- plugins/gitextractor/store/csv.go | 3 +++ plugins/gitextractor/store/database.go | 8 ++++++++ 6 files changed, 53 insertions(+), 5 deletions(-) diff --git a/models/domainlayer/code/commit.go b/models/domainlayer/code/commit.go index 6d1ead84..1d777624 100644 --- a/models/domainlayer/code/commit.go +++ b/models/domainlayer/code/commit.go @@ -66,3 +66,15 @@ type FileComponent struct { func (FileComponent) TableName() string { return "file_component" } + +type CommitfileComponent struct { + common.NoPKModel + RepoId string `gorm:"primaryKey;type:varchar(255)"` + Component string `gorm:"type:varchar(255)"` + CommitSha string `gorm:"primaryKey;type:varchar(40)"` + FilePath string `gorm:"primaryKey;type:varchar(255)"` +} + +func (CommitfileComponent) TableName() string { + return "commitfile_component" +} diff --git a/models/migrationscripts/updateSchemas20220711.go b/models/migrationscripts/updateSchemas20220711.go index 0268f5d0..7df8df0e 100644 --- a/models/migrationscripts/updateSchemas20220711.go +++ b/models/migrationscripts/updateSchemas20220711.go @@ -55,11 +55,23 @@ func (CommitFile) TableName() string { return "commit_files" } +type CommitfileComponent struct { + common.NoPKModel + RepoId string `gorm:"primaryKey;type:varchar(255)"` + Component string `gorm:"type:varchar(255)"` + CommitSha string `gorm:"primaryKey;type:varchar(40)"` + FilePath string `gorm:"primaryKey;type:varchar(255)"` +} + +func (CommitfileComponent) TableName() string { + return "commitfile_component" +} + type updateSchemas20220711 struct{} func (*updateSchemas20220711) Up(ctx context.Context, db *gorm.DB) error { - err := db.Migrator().AutoMigrate(FileComponent{}, CommitFile{}) + err := db.Migrator().AutoMigrate(FileComponent{}, CommitFile{}, CommitfileComponent{}) if err != nil { return err } @@ -68,7 +80,7 @@ func (*updateSchemas20220711) Up(ctx context.Context, db *gorm.DB) error { } func (*updateSchemas20220711) Version() uint64 { - return 20220711122512 + return 20220711122544 } func (*updateSchemas20220711) Name() string { diff --git a/plugins/gitextractor/models/interface.go b/plugins/gitextractor/models/interface.go index 4ed54d7e..86d73bab 100644 --- a/plugins/gitextractor/models/interface.go +++ b/plugins/gitextractor/models/interface.go @@ -27,5 +27,6 @@ type Store interface { Refs(ref *code.Ref) error CommitFiles(file *code.CommitFile) error CommitParents(pp []*code.CommitParent) error + CommitfileComponent(component *code.CommitfileComponent) error Close() error } diff --git a/plugins/gitextractor/parser/repo.go b/plugins/gitextractor/parser/repo.go index 84afbf3a..663bbfc5 100644 --- a/plugins/gitextractor/parser/repo.go +++ b/plugins/gitextractor/parser/repo.go @@ -312,6 +312,7 @@ func (r *GitRepo) getDiffComparedToParent(commitSha string, commit *git.Commit, func (r *GitRepo) storeCommitFilesFromDiff(commitSha string, diff *git.Diff, componentMap map[string]*regexp.Regexp) error { var commitFile *code.CommitFile + var commitfileComponent *code.CommitfileComponent var err error err = diff.ForEach(func(file git.DiffDelta, progress float64) ( git.DiffForEachHunkCallback, error) { @@ -322,17 +323,22 @@ func (r *GitRepo) storeCommitFilesFromDiff(commitSha string, diff *git.Diff, com return nil, err } } + commitFile = new(code.CommitFile) commitFile.CommitSha = commitSha commitFile.FilePath = file.NewFile.Path + commitfileComponent = new(code.CommitfileComponent) for component, reg := range componentMap { if reg.MatchString(commitFile.FilePath) { - commitFile.Component = component + commitfileComponent.Component = component break } } - if commitFile.Component == "" { - commitFile.Component = "Default" + commitfileComponent.RepoId = r.id + commitfileComponent.FilePath = file.NewFile.Path + commitfileComponent.CommitSha = commitSha + if commitfileComponent.Component == "" { + commitfileComponent.Component = "Default" } return func(hunk git.DiffHunk) (git.DiffForEachLineCallback, error) { return func(line git.DiffLine) error { @@ -346,6 +352,12 @@ func (r *GitRepo) storeCommitFilesFromDiff(commitSha string, diff *git.Diff, com }, nil }, nil }, git.DiffDetailLines) + if commitfileComponent != nil { + err = r.store.CommitfileComponent(commitfileComponent) + if err != nil { + r.logger.Error("CommitfileComponent error:", err) + } + } if commitFile != nil { err = r.store.CommitFiles(commitFile) if err != nil { diff --git a/plugins/gitextractor/store/csv.go b/plugins/gitextractor/store/csv.go index 2eb8edea..8a389116 100644 --- a/plugins/gitextractor/store/csv.go +++ b/plugins/gitextractor/store/csv.go @@ -132,6 +132,9 @@ func (c *CsvStore) Refs(ref *code.Ref) error { func (c *CsvStore) CommitFiles(file *code.CommitFile) error { return c.commitFileWriter.Write(file) } +func (c *CsvStore) CommitfileComponent(component *code.CommitfileComponent) error { + return c.commitFileWriter.Write(component) +} func (c *CsvStore) CommitParents(pp []*code.CommitParent) error { var err error diff --git a/plugins/gitextractor/store/database.go b/plugins/gitextractor/store/database.go index becb5264..2821b0f5 100644 --- a/plugins/gitextractor/store/database.go +++ b/plugins/gitextractor/store/database.go @@ -91,6 +91,14 @@ func (d *Database) CommitFiles(file *code.CommitFile) error { return batch.Add(file) } +func (d *Database) CommitfileComponent(commitfile *code.CommitfileComponent) error { + batch, err := d.driver.ForType(reflect.TypeOf(commitfile)) + if err != nil { + return err + } + return batch.Add(commitfile) +} + func (d *Database) CommitParents(pp []*code.CommitParent) error { if len(pp) == 0 { return nil
