aboutsummaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
authorAmine Hilaly <hilalyamine@gmail.com>2019-07-17 18:54:19 +0200
committerAmine Hilaly <hilalyamine@gmail.com>2019-07-23 17:18:04 +0200
commit76a389c93da284c4178789d378b4a2bbd8214934 (patch)
treecc0e1889a11ec31a298c70fb25329fe5565d0d9c /bridge
parentd34eae189c33c6d291cf944e8ddc694c1958e371 (diff)
downloadgit-bug-76a389c93da284c4178789d378b4a2bbd8214934.tar.gz
bridge/gitlab: make resolve error unique within the importer
Diffstat (limited to 'bridge')
-rw-r--r--bridge/gitlab/import.go35
1 files changed, 16 insertions, 19 deletions
diff --git a/bridge/gitlab/import.go b/bridge/gitlab/import.go
index 4eeb3813..d94dbe2e 100644
--- a/bridge/gitlab/import.go
+++ b/bridge/gitlab/import.go
@@ -64,7 +64,6 @@ func (gi *gitlabImporter) ImportAll(repo *cache.RepoCache, since time.Time) erro
if err := gi.ensureLabelEvent(repo, b, labelEvent); err != nil {
return fmt.Errorf("label event creation: %v", err)
}
-
}
// commit bug state
@@ -131,17 +130,17 @@ func (gi *gitlabImporter) ensureIssue(repo *cache.RepoCache, issue *gitlab.Issue
func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, note *gitlab.Note) error {
id := parseID(note.ID)
- hash, err := b.ResolveOperationWithMetadata(keyGitlabId, id)
- if err != cache.ErrNoMatchingOp {
- return err
- }
-
// ensure issue author
author, err := gi.ensurePerson(repo, note.Author.ID)
if err != nil {
return err
}
+ hash, errResolve := b.ResolveOperationWithMetadata(keyGitlabId, id)
+ if err != nil && err != cache.ErrNoMatchingOp {
+ return err
+ }
+
noteType, body := GetNoteType(note)
switch noteType {
case NOTE_CLOSED:
@@ -149,7 +148,8 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
author,
note.CreatedAt.Unix(),
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: id,
+ keyGitlabUrl: "",
},
)
return err
@@ -159,7 +159,8 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
author,
note.CreatedAt.Unix(),
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: id,
+ keyGitlabUrl: "",
},
)
return err
@@ -171,6 +172,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
// we should check for "changed the description" notes and compare issue texts
if issue.Description != b.Snapshot().Comments[0].Message {
+
// comment edition
_, err = b.EditCommentRaw(
author,
@@ -195,7 +197,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
}
// if we didn't import the comment
- if err == cache.ErrNoMatchingOp {
+ if errResolve == cache.ErrNoMatchingOp {
// add comment operation
_, err = b.AddCommentRaw(
@@ -220,18 +222,13 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
}
// search for last comment update
- timeline, err := b.Snapshot().SearchTimelineItem(hash)
+ comment, err := b.Snapshot().SearchComment(hash)
if err != nil {
return err
}
- item, ok := timeline.(*bug.AddCommentTimelineItem)
- if !ok {
- return fmt.Errorf("expected add comment time line")
- }
-
// compare local bug comment with the new note body
- if item.Message != cleanText {
+ if comment.Message != cleanText {
// comment edition
_, err = b.EditCommentRaw(
author,
@@ -251,7 +248,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
return nil
case NOTE_TITLE_CHANGED:
-
+ // title change events are given new notes
_, err = b.SetTitleRaw(
author,
note.CreatedAt.Unix(),
@@ -265,8 +262,8 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
return err
default:
- // non handled note types
-
+ // non handled note types, this is not an error
+ //TODO: send warning via channel
return nil
}